在包含数值的字符串字段上使用datareader.getString()时,InvalidCastException

问题描述 投票:0回答:1

我在sqlite数据库中有一个字段,我们将其称为field1,在该字段上,我尝试遍历每条记录(有上千条记录)。字段类型为string。前四行中的field1值如下:

DEPARTMENT
09:40:24
PARAM
350297

这是一些用于遍历每一行并显示值的简单代码:

while (sqlite_datareader.Read())
{
     strVal = sqlite_datareader.GetString(0);
     Console.WriteLine(strVal);
}

前三个值正确显示。但是,当到达数字条目350297时,它会出错,但.getString()方法具有以下异常

An unhandled exception of type 'System.InvalidCastException' occurred in System.Data.SQLite.dll

我已经尝试过将其转换为字符串以及其他一些东西。但是我无法弄清为什么会这样。现在,我被迫使用类型为getValueobject,然后转换回字符串。但我想弄清楚为什么getString()在这里不起作用。

有什么想法吗?

编辑:这是我目前处理该问题的方式:

 object objVal;  // This is declared before the loop starts...

 objVal = sqlite_datareader.IsDBNull(i) ? "" : sqlite_datareader.GetValue(i);
 if (objVal != "")
 {
     strVal = (string)objVal;
 } 
c# sqlite system.data.sqlite
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.