У меня есть приложение C#, которое записывает некоторые данные в базу данных SQLite, проблема возникает, когда я пытаюсь сохранить двойной C# в SQLite REAL.Comma vs dot as decimal separator
Он сохраняет его в базу данных с запятой в виде разделителя (как обычно, в моей стране, не уверен, что он рассчитывает на что угодно).
Таблица имеет следующую структуру:
CREATE TABLE `valoresStock` (
`Fecha` TEXT,
`IdArticulo` TEXT,
`IdColor` INTEGER,
`KgPorUnidad` REAL,
`Stock` REAL,
`CostePorKg` REAL,
`CostePorUnidad` REAL,
PRIMARY KEY(Fecha,IdArticulo,IdColor)
);
и запрос я использую в моем приложении является следующее:
cmd.CommandText = "INSERT INTO valoresStock (Fecha, IdArticulo, IdColor, KgPorUnidad, Stock, CostePorKg, costePorUnidad) VALUES ('" + DateTime.Today + "','" + referencia.idArticulo + "', '" + referencia.idColor + "', '" + referencia.kilos + "', '" + referencia.stockActual + "', '" + referencia.valorPorKg + "', '" + referencia.valorPorUnidad + "') ";
Как я уже сказал, последние четыре поля имеют типа двойной. Ошибка не указана.
Затем данные хранятся следующим образом:
То есть, используя точку, когда он не имеет дробной части, и запятая, когда он делает.
Проблема с этим, например, когда я использую ЗЕЬЕСТ для расчета, например, как это:
SELECT VS.Fecha, VS.IdArticulo, VS.IdColor, (VS.Stock * (VS.CostePorUnidad + VS.CostePorKg * Vs.KgPorUnidad)) AS Valor FROM valoresStock VS
Это дает следующий результат, который является неправильным (только взял номер с точкой).
Так что если я вручную изменить запятые для точек в моей таблице, она работает должным образом.
Но как сделать мое приложение сделать это, своего рода изменения культуры?
Или я могу заставить SQLite понять или автоматически преобразовать запятую?
Почему SQLite принимает это число как действительное, если оно не понимает его позже?
Еще одна возможность, где вы должны использовать параметризованные запросы. –
Не могли бы вы объяснить себя дальше? – Pinx0
Я описал это в ответ. –