1. 程式人生 > >Text資料型別,引數化查詢但未提供該引數(將null插入資料庫)

Text資料型別,引數化查詢但未提供該引數(將null插入資料庫)

當你是使用引數化查詢時為引數賦時,比如command.Parameters.Add(@a,SqlDbType.Text,30).Value=a;當a=null是將報錯: 錯引數化查詢 '(@a varchar(100)....' 需要引數 '@a',但未提供該引數 只是因為你給a的為null,而資料庫中的null(空)是System.DBNull 類

當你是使用引數查詢時為引數賦值時,比如command.Parameters.Add("@a",SqlDbType.Text,30).Value=a;當a=null是將報錯:

錯引數化查詢 '(@a varchar(100)....' 需要引數 '@a',但未提供該引數

只是因為你給a的值為null,而資料庫中的null(空)是System.DBNull 型別的不是同一類。所以在插入空的時候要用DBNull,而不是null,

所以可以這樣改:

command.Parameters.Add("@a",SqlDbType.Text,30).Value=a ?? DBNull.Value; 

?? :?? 運算子稱作 null 合併運算子。如果此運算子的左運算元不為 null,則此運算子將返回左運算元;否則返回右運算元。

但是還是會報下面的錯誤。

\


解決方法:

很簡單隻要在後面加上 ToString()就好了;

如下

command.Parameters.Add("@a",SqlDbType.Text,30).Value=a ?? DBNull.Value.ToString();