2013-05-03 46 views
-2

我使用一個表LOG其中有3列:Null值2005表

  • Login nvarchar(50)
  • Date int
  • Logout nvarchar(50)

現在,如果我不進入應將值存入Logout列,然後存儲NULL。但對我而言,它存儲爲" "

我已經給出截圖1我的表定義和截圖2

enter image description here

enter image description here

+0

是什麼呢默認值? – 2013-05-03 05:46:43

+1

你可以發送插入查詢嗎? – 2013-05-03 05:47:10

+2

您確定DAL *不是*插入'「」'(或'「」')嗎?另外,考慮爲列使用*更合適的數據類型*(例如DATETIME2或DATETIMEOFFSET) - 這也將「修復」
問題,收集缺少的相關信息(準確的登錄/註銷日)並允許合理的排序。我甚至不會問爲什麼「日期」列是(身份)PK列。 – user2246674 2013-05-03 05:47:17

回答

0

表中的數據可能是在您使用INSERT INTO日誌插入查詢(登錄,日期,註銷)VALUES(...)和一個「」作爲註銷字段的值。檢查你的插入語句,並確認你沒有犯這個錯誤。

0

替代的列表來解決這個問題:

  1. 設爲默認值的列。
  2. 在插入查詢中提供NULL'NULL'。
  3. 如果找到'NULL'則選擇數據。 (插入時無變化)
  4. 更新當前數據,如果發現然後設置NULL。

謝謝。

+0

實際情況是如果我忘記插入值,那麼它必須是**「NULL」** 。爲此,我可以使用默認值。但我想檢查該字段是否爲NULL(或)NOT **。我如何檢查這個...? – 2013-05-03 06:14:34

+0

請看你的應用程序文本框,我認爲有''空字符串放或請給我你的插入查詢。 – Anvesh 2013-05-03 06:17:23

+0

Sry @Anu,我沒有插入值。我將使用註銷時間更新表..... Cmd = new SqlCommand(「update ActLog set Logout ='」+ TimeOut.Text +''where Date ='「+ curoutdate +」'「,Con); – 2013-05-03 06:24:49

0

試試看看這個代碼。

if (!string.IsNullOrEmpty(Impdate.ToString())) 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = Impdate; 
       } 
       else 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = SqlDateTime.Null; 
       } 
0

嘗試這樣

if (!string.IsNullOrEmpty(Impdate.ToString())) 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = Impdate; 
       } 
       else 
       { 
        cmd.Parameters.Add("@Logout", SqlDbType.Date).Value = ""; 
       }