[英]C# - InvalidCastException when fetching double from sqlite
当我从C#中的SQLite数据库中获取任何double时,我一直收到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)
您可能需要检查用于将值存储在数据库中的数据类型。 好像你可以存储一个整数,但试图检索它作为一个双。
是否将实际的表模式定义为使用DOUBLE? 由于数据库引擎是无类型的,因此SQLite将进行一些转换 。 如果它实际上是SQL DOUBLE列,则也可以尝试强制类型转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.