【发布时间】:2023-04-10 13:00:01
【问题描述】:
当我在 C# 中从我的 SQLite 数据库中获取任何双精度时,我不断收到 InvalidCastException。异常说“指定的演员表无效。”
我能够在 SQL 管理器中看到该值,因此我知道它存在。可以从数据库中获取字符串 (VARCHARS) 和整数。我也可以将值作为对象获取,但是当它假定为“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)
【问题讨论】:
-
reader.GetFieldType(3) 返回什么?
-
我的猜测是异常来自 GetDouble 方法内部。但是,我没有那个 SQLite 库,也无法检查它。你能做一个
Double.Parse(reader.GetString(3)); -
这似乎有效!这样做很烦人,但比例外更好。谢谢!
-
我猜你可能在数据库和运行代码的客户端上有不同的语言环境?
-
如何检查我的数据库的语言环境?