C# SQLite获取int而不是float

C# SQLite获取int而不是float,c#,sqlite,unity3d,C#,Sqlite,Unity3d,在Unity中,我想将数据库表中的鼠标敏感度值(float)保存为REAL。但出于某种原因,它会对值进行舍入,因此如果值为1.0,则会保存1.0,但如果值为0.65,则会保存0.0。问题是: foreach (KeyValuePair<string, float> kv in mouse) { MyDataBase.ExecuteQueryWithoutAnswer("UPDATE Mouse SET value = '" + kv.Val

在Unity中,我想将数据库表中的鼠标敏感度值(float)保存为REAL。但出于某种原因,它会对值进行舍入,因此如果值为1.0,则会保存1.0,但如果值为0.65,则会保存0.0。问题是:

foreach (KeyValuePair<string, float> kv in mouse)
    {
        MyDataBase.ExecuteQueryWithoutAnswer("UPDATE Mouse SET value = '" + kv.Value.ToString() + "' WHERE option = '" + kv.Key + "'");
    }
foreach(鼠标中的KeyValuePair)
{
MyDataBase.ExecuteQueryWithoutAnswer(“更新鼠标设置值=”“+kv.value.ToString()+”,其中选项=“+kv.Key+””);
}

其他类型保存正确。

找到了逗号而不是点。制作了这段令人毛骨悚然的代码,现在可以工作了

foreach (KeyValuePair<string, float> kv in mouse)
    {
        string s = ((int)kv.Value).ToString() + "." + ((kv.Value - (int)kv.Value) * 100).ToString();
        MyDataBase.ExecuteQueryWithoutAnswer("UPDATE Mouse SET value = '" + s + "' WHERE option = '" + kv.Key + "'");
    }
foreach(鼠标中的KeyValuePair)
{
字符串s=((int)kv.Value).ToString()+“+((kv.Value-(int)kv.Value)*100.ToString();
MyDataBase.ExecuteQueryWithoutAnswer(“更新鼠标设置值=”“+s+”,其中选项=”“+kv.Key+””);
}

尝试使用参数而不是依赖于区域性的字符串表示您正在将数值转换为字符串。然后将该字符串传递给需要将该字符串存储在数字字段中的数据库引擎,以便它执行另一个转换。最终结果是一个错误。相反,如果您使用正确数据类型的参数并将正确的数据类型作为值传递,则不会执行转换,也不会误解十进制分隔符。是的,您手中有一个真正错误的解决方案。再次看看如何使用参数编写查询。我会给出一个例子,但是如果没有看到executequerywithoutanswer的代码,我就不能给出它。此外,其他类型的代码保存正确。不,您没有使用此方法正确保存它们。例如,如果您有一个包含单词O'Brian(字符串中的引号)的字符串,会发生什么。现在,让我们谈谈避免这种方法的另一个重要原因。让我们谈谈