當你是使用參數化查詢時為參數賦值時,比如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()就好了;
如下
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:sql;">command.Parameters.Add("@a",SqlDbType.Text,30).Value=a ?? DBNull.Value.ToString();