0
我想使用下面的代碼從SQLite數據庫中的表中獲取1列的數據。如果數據爲空,如何停止sqlitedatareader返回0?
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));
}
但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
則不會出現異常錯誤的方式。
請提出一個方法來完成任務。
不工作!即使在這裏'if(reader.IsDBNull(0))'總是返回false。如果值爲null,它不會返回true。 – JDoshi
哇哇。你確定有REAL DbNull嗎?或者只是字符串'null'?因爲這段代碼對於DbNull的 – Sergio
來說是完美的工作,所以我相信它不是字符串,因爲當我像'String str = reader [0]那樣傳遞它作爲String'時,'str'返回給我'null'。 – JDoshi