C#SQLite连接器问题

时间:2011-05-15 19:45:08

标签: c# .net sqlite

鉴于代码:

        SQLiteCommand cmd = new SQLiteCommand("UPDATE \"Category\" SET \"name\"=?name, \"description\"=?description, \"color\"=?color, \"active\"=?active, \"parent\"=?parent WHERE \"id\"=?id", sql);  
        cmd.Parameters.Add("?id", DbType.Int32).Value = _id;  
        cmd.Parameters.Add("?name", DbType.String).Value = _name;  
        cmd.Parameters.Add("?description", DbType.String).Value = _description;  
        cmd.Parameters.Add("?color", DbType.Int32).Value = _color;  
        cmd.Parameters.Add("?active", DbType.Boolean).Value = _active;  
        cmd.Parameters.Add("?parent", DbType.Int32).Value = _parent;  
        cmd.Prepare();  
        cmd.ExecuteNonQuery();  

我们遇到的问题是最后一行抛出

SQLite error  near "name": syntax error  

IMO是胡说八道。还有其他事情必须继续。桌子是连接和打开的(因为我可以从桌子上读到很好),其他一切工作都很棒。由于某种原因,它似乎无法处理这个简单的更新。

编辑:好的。我尝试完全取出名字字段,但仍然没有骰子。我只是在描述字段上得到错误。这绝对不是关键字问题。

2 个答案:

答案 0 :(得分:2)

您是否尝试过以下操作?

cmd.Parameters.Add("@id", DbType.Int32);  
cmd.Parameters.Add("@name", DbType.String);  
...

cmd.Parameters["@id"].Value = _id;  
cmd.Parameters["@name"].Value = _name;  
... 

答案 1 :(得分:0)

在sql语法中使用字段名称周围的括号,因为它们也可能与保留字冲突。括号将消除这个问题。我不确定,但身份和姓名都可以保留。