Я хочу сохранить двойник в моей базе данных SQLite с помощью C # и снова прочитать его.
Теперь проблема:
Сначала ввод:
Если я сохраняю двойное с точкой (например, 20.50
) и вставляю ее в мою базу данных, я получаю 2050.0
.
Если я сохраняю его с запятой (например, 20,30
), я получаю в моей базе данных 20,3
. Это то, что я хочу.
Ввод кода:
String sql = $"INSERT INTO tablename (number) VALUES ('{number}')";
SQLiteConnection dbConnection = new SQLiteConnection("Data Source = " + nameDB + ".sqlite; Version = 3;");
dbConnection.Open();
SQLiteCommand Command = new SQLiteCommand(sql, dbConnection);
Command.ExecuteNonQuery();
Command.Parameters.Clear();
dbConnection.Close();
число является двойным в c # и в sqllite REAL
Но теперь вывод:
Если в моей базе данных есть значение 20,3, и я читаю это с помощью:
double number = reader.GetDouble(reader.GetOrdinal("tablename"));
Ошибка: InvalidCastException: указанное приведение недействительно.
или
decimal number = reader.GetDecimal(reader.GetOrdinal("tablename"));
Ошибка: неверный формат ввода
Если я использую ридер без методов get, я получаю число без запятой после запятой, например int.
Оба работают, если формат в БД - с точкой вместо запятой. Но это не работает для ввода.
Есть ли решение этой проблемы?