C# - 从sqlite中获取double时出现InvalidCastException

时间:2010-05-11 16:10:19

标签: c# .net sql sqlite

当我从C#中的SQLite数据库中获取任何double时,我不断收到InvalidCastException。例外情况说“指定演员表无效。”

我能够在SQL管理器中看到这个值,所以我知道它存在。可以从数据库中获取字符串(VARCHARS)和int。我也可以将值作为对象获取,但是当它被假设为“66,8558604947586”(纬度协调)时,我得到“66.0”。

谁知道如何解决这个问题?

我的代码:

using System.Data.SQLite;

...

SQLiteConnection conn = new SQLiteConnection(@"Data Source=C:\\database.sqlite;    Version=3;");
conn.Open();
SQLiteDataReader reader = getReader(conn, "SELECT * FROM table");

//These are working 
String name = reader.GetString(1);
Int32 value = reader.GetInt32(2);

//This is not working
Double latitude = reader.getDouble(3);

//This gives me wrong value
Object o = reader[3]; //or reader["latitude"] or reader.getValue(3)

2 个答案:

答案 0 :(得分:0)

您可能需要检查用于在数据库中存储值的数据类型。看起来你可能正在存储整数,但试图将其作为双精度检索。

答案 1 :(得分:0)

实际的表架构是否定义为使用DOUBLE? SQLite将执行some translation,因为数据库引擎是无类型的。如果它实际上是一个SQL DOUBLE列,你也可以尝试一个强制转换。

More information on SQLite type affinity.