当我尝试将DOUBLE值插入到我的SQLite表中时,它们会以某种方式自动转换为INT值,即使我将属性类型定义为DOUBLE或REAL也是如此。但是,如果我将属性类型更改为例如VARCHAR,它会正确存储我插入的DOUBLE值...用于创建表的SQL语句具有以下形式:
CREATE table (someAttribute DOUBLE)
和INSERT查询:
INSERT into table(someDoubleValue) // => e.g. 1.5932 gets stored as 1
如果有人知道为什么会这样,以及我如何解决它(以便它实际上将DOUBLE值存储为DOUBLE),我们非常感激!
编辑:C#代码如下:SQLiteCommand command = new SQLiteCommand("CREATE TABLE table1(someAttribute DOUBLE)", m_dbConnection);
command.ExecuteNonQuery();
command.CommandText = "INSERT INTO table1('1.5932')";
command.ExecuteNonQuery();
command.CommandText = "SELECT * FROM table1";
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
Console.WriteLine("value: "+reader["someAttribute"]); //this will display an integer value instead of a double
答案 0 :(得分:3)
尝试使用参数化查询。我猜测SQLite引擎正在将你的字符串转换为INT,从而失去你的精确度。
SQLiteCommand command = new SQLiteCommand("CREATE TABLE table(someAttribute DOUBLE)", m_dbConnection);
command.ExecuteNonQuery();
command.CommandText = "INSERT INTO table(@val)";
command.Parameters.Add("@val", 1.5932m);
command.ExecuteNonQuery();