日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dbnull和null_NULL和DBNull的区别分析

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dbnull和null_NULL和DBNull的区别分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試準備:

1.新建一個表

CREATE TABLE `cacb` (

`CA` varchar(255) DEFAULT NULL,

`CB` varchar(255) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.新建一個控制臺項目,主函數實現如下:

#region Mysql DBNull測試

string con = "server=localhost;User Id=root;database=mytest;password=my88888;persist security info=True;charset=utf8;";

bool flg = null is object;//false

bool fdb = DBNull.Value is object;//true

string sql = "SELECT * from CACB? limit 1,1;";

using (MySqlConnection mc=new MySqlConnection(con))

{

mc.Open();

using (MySqlCommand com=new MySqlCommand(sql,mc))

{

var result= com.ExecuteScalar();

if (result==DBNull.Value)

{

Console.WriteLine("這個確定是數據庫空的了");

}

if (result==null)

{

Console.WriteLine("這里是null了.");

}

}

}

#endregion

3.結論:DBNull是針對那些查詢出來的值為Null的數據,繼承Object,null是.net里面的一種類型數據不繼承Object,說白了就是,DBNull是數據庫的默認空值,而null是.net的默認值空值。那么row[column].ToString() 這個寫法永遠不會在ToString那里發生NullReferenceException。

需要引起注意的是: ExecuteScalar的規則是,返回第一列,第一行的數據。假如有第一行,但是第一列為空,那么返回的是DBNull?。假如一行都沒有,那么ExecuteScalar就返回null,假如第一列第一行不為空,那么ExecuteScalar就直接對應的DotNet的值。

所以我們在查詢數據的結果的時候要注意直接用 dbresult==null 作為條件判斷是容易出問題的。

可以參考下前輩們的探索:

總結

以上是生活随笔為你收集整理的dbnull和null_NULL和DBNull的区别分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。