[.NET] 如何插入null值至日期欄位

看板Visual_Basic作者 (喵)時間14年前 (2011/04/29 17:02), 編輯推噓3(3018)
留言21則, 4人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案): visual basic 2010 請問我有以下code是用來插入資料至table內 Dim cmd As Odbc.OdbcCommand cmd = New Odbc.OdbcCommand("insert into PICsM (CC,EDate,PICDate) values ('" & Usr & "','" & Me.EDate.text & "','" & Me.PICDate.Text & "')", Cnn) cmd.ExecuteNonQuery() 其中問題是在於 Edate 跟 PICDate 這2個文字格 使用者是可以自由決定要不要填的 當使用者不填時,資料庫裡的日期欄位要是NULL值才行 可是上述Code並不能插入null值、會變成是 1900/1/1 不打算用if...else...去判斷是否為空白來變更cmd的內容 因為這種可填可不填的日期欄還滿多的 通通用if判斷的話會變成落落長一串 Orz 插入後再用 "update picsm set Edate = null where Edate = '1900/11'"去更新 感覺又不是那麼簡單俐落 請問該怎麼讓它插入null值呢?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.17.41

04/29 17:49, , 1F
SqlDateTime.null ?
04/29 17:49, 1F

04/29 18:05, , 2F
... & ', null ,' & ... 這樣不就得了
04/29 18:05, 2F

04/29 18:06, , 3F
還有.NET有String.Format() 快別再用這種&到死的寫法吧
04/29 18:06, 3F

04/29 18:18, , 4F
受教了 謝謝樓上
04/29 18:18, 4F

04/29 18:30, , 5F
冏 我只是想說他還是拼字串不是用SqlCommand和Parameter
04/29 18:30, 5F

04/29 18:30, , 6F
而拼字串的話在對應欄位塞一個null應該就可以了…
04/29 18:30, 6F

04/29 20:57, , 7F
我是新手@_@,來版上學到東西,就謝謝一下囉^^
04/29 20:57, 7F

04/30 18:26, , 8F
換個角度來看~用 ' '不也行嗎??
04/30 18:26, 8F

04/30 23:28, , 9F
不行吧,' '是字串,應該會轉換為1900-1-1
04/30 23:28, 9F

04/30 23:28, , 10F
''也是一樣的問題,他是空字串,不是null
04/30 23:28, 10F

04/30 23:29, , 11F
MS SQL對null的規定,就我碰到的,龜毛到令人髮指
04/30 23:29, 11F

04/30 23:29, , 12F
所以在這裡題外呼籲(1)select的時候多用isnull()函數
04/30 23:29, 12F

04/30 23:30, , 13F
(2)設計資料表時儘可能取個default值,或限制不可為null
04/30 23:30, 13F

04/30 23:30, , 14F
當然你若早有計畫用null代表不存在,就不在此限
04/30 23:30, 14F

05/01 15:28, , 15F
嗯嗯~那插入 & isnull & 可以嗎??
05/01 15:28, 15F

05/01 15:29, , 16F
喔喔~應該是可以XD
05/01 15:29, 16F

05/01 16:51, , 17F
... isnull()是select的時候用的 isnull(field, value)
05/01 16:51, 17F

05/01 16:51, , 18F
意思是說field如果為null 就自動轉成value
05/01 16:51, 18F

05/01 16:52, , 19F
插入isnull…你面談的時候敢這樣寫就不要給我改到。
05/01 16:52, 19F

05/02 19:22, , 20F
SQL的null 真的要蠻小心的,以前寫網頁的時候,找了很久
05/02 19:22, 20F

05/02 19:23, , 21F
的錯,最後才發現.....原來是null的問題
05/02 19:23, 21F
文章代碼(AID): #1Dkdwp0i (Visual_Basic)