簡體   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