繁体   English   中英

C#-从sqlite获取双精度时的InvalidCastException

[英]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列,则也可以尝试强制类型转换。

有关SQLite类型关联的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM