我正在尝试使用以下代码从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));
}
但是DBNull
检查总是返回false,即使DataBase中有null也是如此。因此,此处调用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
时才会发生异常。
请建议一种方法来完成任务。
答案 0 :(得分:0)
正确检查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="";