C # - InvalidCastException при получении двойной из sqlite - PullRequest
0 голосов
/ 11 мая 2010

Я получаю исключение InvalidCastException, когда извлекаю данные из моей базы данных SQLite в C #. Исключение говорит: «Указанное приведение недействительно».

Я вижу значение в диспетчере SQL, поэтому знаю, что оно существует. Можно получить строки (VARCHARS) и целые из базы данных. Я также могу извлечь значение как объект, но затем я получаю «66.0», когда предполагается, что это «66,8558604947586» (широта координации).

Кто-нибудь знает, как это решить?

Мой код:

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)

Ответы [ 2 ]

0 голосов
/ 11 мая 2010

Определена ли фактическая таблица схема для использования DOUBLE? SQLite сделает некоторый перевод , так как механизм БД не содержит типов. Если это на самом деле столбец SQL DOUBLE, вы также можете попробовать приведение.

Дополнительная информация о сходстве типов SQLite.

0 голосов
/ 11 мая 2010

Возможно, вы захотите проверить тип данных, который вы использовали для сохранения значения в базе данных. Похоже, что вы, возможно, храните целое число, но пытаетесь получить его как двойное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...