c#将布尔值插入数据库

时间:2011-10-29 15:01:53

标签: c# database sqlite

我在将boolean值插入数据库时​​遇到问题。 我的结构很简单:

struct
{
   string name;
   bool isStudent;
}

我希望将其插入数据库,如下所示:

 dbCommand.CommandText = "INSERT INTO People (name, isStudent) VALUES ('" + people1.name + "', " + people1.isStudent + ")";
 dbCommand.ExecuteNonQuery();

但我抛出异常:

  

SQLite错误没有这样的列:True

3 个答案:

答案 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缓存已编译的语句。