C# SQLite中参数的使用

C# SQLite中参数的使用,c#,winforms,sqlite,parameters,windows-ce,C#,Winforms,Sqlite,Parameters,Windows Ce,我用我的SQLitedb存储我的信息,它工作正常。但是我想使用参数 我修改此行以设置值和正常工作: 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 =

我用我的
SQLite
db存储我的信息,它工作正常。但是我想使用
参数

我修改此行以设置
正常工作

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);
错误:但是如果我想对列名使用
参数
,它会说“@0”附近有
语法错误:

在这种情况下是否可以使用
参数
?代码怎么了


谢谢你的帮助

无法参数化列名。第一种方法可以


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

您的列名依赖于用户数据是否有充分的理由?@notfed。是的,在我的数据库中有20列,我必须只在用户端选择的5列中插入数据注意:不惜一切代价避免String.Format!!Def String.Concat在本例中..@bang感谢您的建议。我会检查你的建议。表名和可能所有其他数据库对象也是如此!
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);