アプリケーション用にデータベースを準備するコードを書いています。コードには、テーブルを作成しているときにいくつかの繰り返しの SQL ステートメントがあり、いくつかのメソッドでそれらを非表示にしたい (現在のところ、主キーを作成し、テーブルの ID を自動インクリメントにするのは 2 つだけです)。ポストグル)。主キーの単純なケースでは、最初に次のような関数を作成しました。
public void MakePrimaryKey(DbConnection conn, string tblName, string colName)
{
conn.Execute(@"
ALTER TABLE ""@tblName""
ADD CONSTRAINT ""@constrName"" PRIMARY KEY(""@colName"")
", new { tblName = tblName,
constrName = tblName + "_pkey",
colName = colName } );
}
エラーと例外をいじくり回した後、最終的に、この方法でパラメーターを使用することは実際にはサポートされていないという結論に達したため、従来のstring.Format()
呼び出しに切り替えましたが、すべてうまくいきました。
しかし、私は本当に満足していません。このパラメーターの使用方法は本当にサポートされていませんか? もしそうなら、これらのパラメータを安全に使用できる場所はどこですか? ストアド プロシージャ パラメータを使用できる場所など、SQL クエリの可変部分のみですか。