C# SQLite 连接器问题

本文关键字:问题 连接器 SQLite | 更新日期: 2023-09-27 17:56:25

给定代码:

        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是无稽之谈。一定是别的事情发生了。桌子是连接和开放的(因为我可以从桌子上读到很好),其他一切都很好。由于某种原因,它似乎无法处理这个简单的更新。

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

C# SQLite 连接器问题

你试过以下吗?

cmd.Parameters.Add("@id", DbType.Int32);  
cmd.Parameters.Add("@name", DbType.String);  
...
cmd.Parameters["@id"].Value = _id;  
cmd.Parameters["@name"].Value = _name;  
... 

在 sql 语法中使用括号,因为它们也可能与保留字冲突。括号将消除此问题。我不确定,但 id 和名称都可以是保留词。