我在将boolean值插入数据库时遇到问题。 我的结构很简单:
struct
{
string name;
bool isStudent;
}
我希望将其插入数据库,如下所示:
dbCommand.CommandText = "INSERT INTO People (name, isStudent) VALUES ('" + people1.name + "', " + people1.isStudent + ")";
dbCommand.ExecuteNonQuery();
但我抛出异常:
SQLite错误没有这样的列:True
答案 0 :(得分:4)
使用参数,您不必担心值的引用或格式(此外,避免SQL注入是一个好习惯):
dbCommand.CommandText = "INSERT INTO People (name, isStudent)
VALUES (@name, @isStudent)";
dbCommand.Parameters.AddWithValue("@name", people1.name);
dbCommand.Parameters.AddWithValue("@isStudent", people1.isStudent);
dbCommand.ExecuteNonQuery();
答案 1 :(得分:3)
尝试使用:
dbCommand.CommandText = "INSERT INTO People (name, isStudent) VALUES ('" + people1.name + "', '" + people1.isStudent + "')";
请注意,'true'
或'false'
会以这种方式引用。
或者:
int val = isStudent ? 1 : 0;
dbCommand.CommandText = "INSERT INTO People (name, isStudent) VALUES ('" + people1.name + "', " + val + ")";
1
将用于真值,0
用于假值。
答案 2 :(得分:1)
SQLite没有bool列类型,您自己构建SQL语句。如果你想这样做,那就来回转换1和0.
我还认为.net包装器可以做到4 u。但是你必须使用SQL参数,而不是自己构建字符串,甚至让它有机会这样做。
构建参数化查询(?)也让SQL lite缓存已编译的语句。