當我從C#中的SQLite數據庫中獲取任何雙精度值時,我總是收到一個InvalidCastException異常。例外說「指定的演員無效」。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)返回什麼? – 2010-05-11 16:22:57
它返回了一個System.Double – Irro 2010-05-11 16:34:17
我的猜測是異常來自GetDouble方法。我沒有該SQLite庫,但是,無法檢查它。你可以做一個'Double.Parse(reader.GetString(3));' – 2010-05-11 16:44:19