我现在完全被SQLite弄糊涂了。 我用的是System.Data.SQLite版本的C#为什么sqlite会转换。到,
我有两个表:
表1: 在这里面我已经创建了两个列(更多,但他们是在这种情况下,重要的语句是长的方式发布它)。第一个叫做RecStat,第二个叫做DOXinM。 两者都是十进制像这样创建: ...
[RectStat] Decimal,
[DOXinM] Decimal,
...
CREATE TABLE语句是这样的:
Create Table If Not Exists "Table1"
(..Columns..);
当我插入一个值这张表的小数点完美无缺,当我读出它时,它在xaml GUI上也可以工作。
之后,我创建了第二个表,它也有一个小数列。 我创建的表以同样的方式(这是很短的,所以我可以给整个语句)
Create Table If Not Exists "Table2" (
[ID] Integer Not Null Primary Key,
[Material] VarChar(10],
[Thickness] Decimal);
C#代码创建(请注意,我用的所有SQL命令的常量字符串工作):
mySQLiteCommand.CommandText = @"" + DatabasePara.CREATE_SQL + " " + DatabasePara.TABLE_SQL + " " + DatabasePara.IF_SQL + " " + DatabasePara.NOT_SQL + " " + DatabasePara.EXISTS_SQL + " " + DBTableFilter.Filter + "
mySQLiteCommand.CommandText += @"([" + DBTableFilter.ID + "] " + DatabasePara.INTEGER_SQL + " " + DatabasePara.NOT_SQL + " " + DatabasePara.NULL_SQL + " " + DatabasePara.PRIMARYKEY_SQL + ", ";
mySQLiteCommand.CommandText += @"[" + DBTableFilter.Material + "] " + DatabasePara.VARCHAR_SQL + "(360), ";
mySQLiteCommand.CommandText += @"[" + DBTableFilter.Thickness + "] " + DatabasePara.DECIMAL_SQL + ");";
mySQLiteCommand.ExecuteNonQuery();
在这两种情况下,我做了decimal列相同插入:
Insert into Table1 ('RectStat') values ('10.5');
Insert into Table1 ('DOXinM') values ('1.3');
Insert into Table2 ('Thickness') values ('0.25');
对于表2插入:
for (int FilterIndex = 0; FilterIndex < Database.FilterTable.FilterList.Count; FilterIndex++)
{
mySQLiteCommand.CommandText = @"" + DatabasePara.INSERTINTO_SQL + " " + DBTableFilter.Filter + "(" + DBTableFilter.Material + ", " + DBTableFilter.Thickness + ") ";
mySQLiteCommand.CommandText += @"" + DatabasePara.VALUES_SQL + " ('" + Database.FilterTable.GetFilterAt(FilterIndex).Material_Property + "', " + Database.FilterTable.GetFilterAt(FilterIndex).Thickness_Property + ");";
mySQLiteCommand.ExecuteNonQuery();
}
现在数据库插入前两个语句为10.5/1.3,最后一个在0.25 当我读出值的前两部作品完全正常,但最后一个无后的数字显示小数点”。
所以我的问题是。 这是为什么发生? (顺便说一句,我有超过20小数列在我的表和“厚度”是唯一一个这个问题)
我希望你能帮助我。
由于提前 理查德
我曾尝试:
尝试不同的值(有希望,这是因为0.25)没有'试了一下 。但比声明认为它有两列三个值...
由于使用了默认语言设置,所以会出现ID猜测。 – BugFinder
我在哪里找到他们?为什么不同的行为? – Evosoul
阅读http://stackoverflow.com/questions/28084261/comma-vs-dot-as-decimal-separator – BugFinder