鉴于代码:
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是胡说八道。还有其他事情必须继续。桌子是连接和打开的(因为我可以从桌子上读到很好),其他一切工作都很棒。由于某种原因,它似乎无法处理这个简单的更新。
编辑:好的。我尝试完全取出名字字段,但仍然没有骰子。我只是在描述字段上得到错误。这绝对不是关键字问题。答案 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语法中使用字段名称周围的括号,因为它们也可能与保留字冲突。括号将消除这个问题。我不确定,但身份和姓名都可以保留。