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

列名をパラメータ化することはできません。最初のアプローチは大丈夫です。

または、これらすべてをパラメータとしてストアド プロシージャに送信し、db レベルで動的にクエリを作成して実行することもできます。

于 2012-06-13T18:35:23.593 に答える