最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中SQL參數(shù)傳入空值報(bào)錯(cuò)解決方案

 更新時(shí)間:2017年06月09日 09:05:02   作者:邪心魔佛一頁(yè)書(shū)  
這篇文章主要介紹了C#中SQL參數(shù)傳入空值報(bào)錯(cuò)解決方案,需要的朋友可以參考下

C#中的null與SQL中的NULL是不一樣的,SQL中的NULL用C#表示出來(lái)就是DBNull.Value。

注意:SQL參數(shù)是不能接受C#的null值的,傳入null就會(huì)報(bào)錯(cuò)。

下面我們看個(gè)例子:

 SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,conn);
 cmd.parameters.add("@StuName" ,stuName);
 cmd.parameters.add("@StuAge" ,stuAge);
 cmd.ExecuteNonQuery();

上述代碼咋看冇問(wèn)題,其實(shí)當(dāng)stuName或stuAge的值為null時(shí),就會(huì)拋出異常。那怎么解決呢?

解決方案:當(dāng)stuName或stuAge的值為null時(shí),傳入DBNull.Value。下面在公共類(lèi)里寫(xiě)一個(gè)靜態(tài)的通用方法對(duì)傳入的參數(shù)值進(jìn)行判斷,為null則返回DBNull.Value,否則返回原值。

public static object SqlNull(object obj)
 {
  if(obj == null)
  {
   return DBNull.Value;
  }
  else
  {
   return obj;
  }  
 }

調(diào)用上述方法后的代碼如下:

 SqlCommand cmd=new SqlCommand("Insert into Student values(@StuName,@StuAge)" ,conn);
 cmd.parameters.add("@StuName" ,SqlNull(stuName));
 cmd.parameters.add("@StuAge" ,SqlNull(stuAge));
 cmd.ExecuteNonQuery();

另外,如果參數(shù)值來(lái)源于控件(如文本框)的值,則傳入的參數(shù)值不會(huì)為null(因?yàn)榭丶闹挡粫?huì)為null,即便沒(méi)值也是""),如果想實(shí)現(xiàn)當(dāng)控件的值為""(如文本框中沒(méi)有輸入字符)時(shí),數(shù)據(jù)表字段值為NULL,只需對(duì)SqlNull方法稍作修改:

 public static object SqlNull(object obj)
 {
   if(obj == null || obj.ToString() == "")
   {
    return DBNull.Value;
   }
   else
   {
    return obj;
  }  
 }

延伸:

傳SQL參數(shù)還可以傳參數(shù)組,如下:

 SqlParameter[] parm = new SqlParameter[]
 {
  new SqlParameter("@StuName", SqlNull(stuName)),
  new SqlParameter("@StuAge", SqlNull(stuAge)) 
 }
 if(parm != null)
 {
  cmd.Parameters.AddRange(parm);  
 }
 cmd.ExecuteNonQuery();

注意:new SqlParameter(參數(shù)名, 參數(shù)值)里的參數(shù)值同樣不接受null值,且parm參數(shù)組也不接受null, if(parm != null) 的判斷不能少。

以上所述是小編給大家介紹的C#中SQL參數(shù)傳入空值報(bào)錯(cuò)解決方案,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

舞阳县| 泸西县| 娱乐| 松潘县| 农安县| 邛崃市| 新泰市| 信丰县| 德州市| 察雅县| 汾西县| 曲靖市| 桐乡市| 万盛区| 房产| 永德县| 如东县| 通化县| 安塞县| 邮箱| 新泰市| 虞城县| 宁明县| 平罗县| 彩票| 兴安盟| 景洪市| 金堂县| 济南市| 若尔盖县| 奈曼旗| 忻州市| 讷河市| 上思县| 鹤山市| 关岭| 甘南县| 新乐市| 章丘市| 文昌市| 隆尧县|