[英]How to stop sqlitedatareader from returning 0 if data is null?
我正在嘗試使用以下代碼從SQLite數據庫的表中獲取1列的數據。
System.Data.SQLite.SQLiteConnection m_dbConnection = new System.Data.SQLite.SQLiteConnection(String.Format("Data Source={0};Version=3;", filePath));
m_dbConnection.Open();
using (SQLiteCommand cmd = new SQLiteCommand())
{
// Select query here
}
var command = new SQLiteCommand(Query, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();
List<object> data = new List<object>();
while (reader.Read())
{
if (reader[0].GetType() == typeof(DBNull)) // Always gives False
data.Add(reader.GetString(0));
else
data.Add(reader.GetValue(0));
}
但是,即使數據庫中沒有null, DBNull
檢查也總是返回false。 因此,這里將調用reader.GetValue(0)
並將DBNull
轉換為0 。
注意:要獲取的列的數據類型為int
我不希望這個DBNull
轉換為0。如果我這樣做,那么我的任務就完成了。
while (reader.Read())
{
try
{
data.Add(reader.GetString(0));
}
catch (Exception)
{
data.Add(reader.GetValue(0));
}
}
但這是錯誤的方法,因為在大多數情況下,僅當數據為DBNull
時才會拋出異常,否則不會發生異常。
請提出一種完成任務的方法。
正確檢查REAL DbNull值是:
string value;
if (dataReader.IsDBNull(0)) value = "";
else value = dataReader.GetString(0);
如果您有字符串“ null”
string value = dataReader.GetString(0);
if(value.ToLower()=="null")value="";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.