【发布时间】:2017-10-26 07:51:57
【问题描述】:
当我尝试将 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
【问题讨论】:
-
您能发布一些显示 INSERT 的特定 C# 代码吗?
-
请编辑您的帖子并添加c#相关代码。如果它不是 c# 项目,请编辑它以删除 c# 标记 ;-)
-
您在哪里将它们视为整数?在数据库表本身中,还是在您检索它们之后?
-
@EdPlunkett 在我检索它们之后,但如果属性类型是 VARCHAR 则不会(然后它们的正确 DOUBLE 值会显示为字符串)。
-
@user2999349 您插入的是带引号的字符串,而不是
double。引号表示它是一个字符串。看看史蒂夫丹纳的回答,照他说的做,你会没事的。
标签: c# sqlite types int double