Asp.net

將參數中的 NULL 傳遞給儲存過程中的 DateTime 欄位

  • October 6, 2017

我有一個儲存過程,它使用我提供的參數更新數據庫,但我無法將 NULL 傳遞給儲存過程

我需要設為 NULL 的欄位是 DateTime 欄位

DB.Parameters.AddWithValue("@date", NULL)

這給了我錯誤

未聲明“NULL”。不再支持“Null”常量;改用“System.DBNull”

所以我嘗試了

DB.Parameters.AddWithValue("@date", DBNull.Value.ToString())

但這會在將 a 傳遞給欄位時產生1900-01-01 00:00:00.000列中的值""

我也試過

DB.Parameters.AddWithValue("@date", DBNull.Value)

但它會產生這個錯誤

“System.DBNull”類型的值無法轉換為“String”。

有人有什麼想法嗎?

嘗試這樣的事情,使用Add而不是AddWithValue

DB.Parameters.Add("@date", SqlDbType.DateTime).Value = DBNull.Value;

或者你可以像這樣添加你的參數,如果你的變數為空,它會在數據庫中給它一個空值:

DB.Parameters.AddWithValue("@date", myDateTime ?? (object)DBNull.Value);

您需要將其設置為 Amit 提到的可為空的類型。

更多詳細資訊和背景,請訪問<http://evonet.com.au/overview-of-c-nullable-types/>

引用自:https://stackoverflow.com/questions/5182032