2

我有我的SQLite数据库存储我的信息,它工作正常。但是我想使用Parameter.

我修改此行以设置values并且可以正常工作

cmd.CommandText = String.Format("INSERT INTO users ("+data[0]+", "+data[1]+") VALUES (@4,@5);");
p = new SQLiteParameter("@4", System.Data.DbType.String);
p.Value = data[4];
cmd.Parameters.Add(p);
p = new SQLiteParameter("@5", System.Data.DbType.String);
p.Value = data[5];
cmd.Parameters.Add(p);

错误:但是如果我想使用Parameter列的名称,它会说有syntax error near "@0"

cmd.CommandText = String.Format("INSERT INTO users (@0, @1) VALUES (@4,@5);");
    p = new SQLiteParameter("@0", System.Data.DbType.String);
    p.Value = data[0];
    cmd.Parameters.Add(p);
    p = new SQLiteParameter("@1", System.Data.DbType.String);
    p.Value = data[1];
    cmd.Parameters.Add(p);
    p = new SQLiteParameter("@4", System.Data.DbType.String);
    p.Value = data[4];
    cmd.Parameters.Add(p);
    p = new SQLiteParameter("@5", System.Data.DbType.String);
    p.Value = data[5];
    cmd.Parameters.Add(p);

Parameter在这种情况下可以使用吗?代码有什么问题?

谢谢你的帮助!

4

1 回答 1

3

您不能参数化列名。第一种方法是可以的。

或者,您可以将所有这些作为参数发送到存储过程并在数据库级别动态构建查询并执行。

于 2012-06-13T18:35:23.593 回答