当我从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)
答案 0 :(得分:0)
您可能需要检查用于在数据库中存储值的数据类型。看起来你可能正在存储整数,但试图将其作为双精度检索。
答案 1 :(得分:0)
实际的表架构是否定义为使用DOUBLE? SQLite将执行some translation,因为数据库引擎是无类型的。如果它实际上是一个SQL DOUBLE列,你也可以尝试一个强制转换。