27

我刚刚学习 SQLite,我无法让我的参数正确编译到命令中。当我执行以下代码时:

this.command.CommandText = "INSERT INTO [StringData] VALUE (?,?)";

this.data = new SQLiteParameter();
this.byteIndex = new SQLiteParameter();

this.command.Parameters.Add(this.data);
this.command.Parameters.Add(this.byteIndex);

this.data.Value = data.Data;
this.byteIndex.Value = data.ByteIndex;

this.command.ExecuteNonQuery();

我得到一个 SQLite 异常。在检查 CommandText 后,我​​发现无论我在做什么都没有正确添加参数:INSERT INTO [StringData] VALUE (?,?)

有什么我想念的想法吗?

谢谢

4

3 回答 3

86

尝试不同的方法,命名查询中的字段并命名查询中的参数:

this.command.CommandText = "INSERT INTO StringData (field1, field2) VALUES(@param1, @param2)";
this.command.CommandType = CommandType.Text;
this.command.Parameters.Add(new SQLiteParameter("@param1", data.Data));
this.command.Parameters.Add(new SQLiteParameter("@param2", data.ByteIndex));
...
于 2009-04-30T21:48:22.427 回答
29

尝试VALUES代替VALUE.

于 2009-04-30T21:47:01.447 回答
0
var connectionstring = "Data Source=" + Environment.CurrentDirectory + "\\game.db";
using (var connection = new SqliteConnection(connectionString))
{
    var insertCmd = connection.CreateCommand();
    insertCmd.CommandText = "INSERT INTO Results(result, win) VALUES (@prizes, @win)";
    insertCmd.Parameters.AddWithValue("prizes", prizes);
    insertCmd.Parameters.AddWithValue("win", winAmount);
    insertCmd.ExecuteNonQuery();
}
于 2020-09-14T21:09:55.280 回答