列名をパラメータとして使用して列リストに基づいていくつかのSQL文を生成したいとします。ADO.NETでパラメータ接頭辞を取得
編集:C#
var columns = new string[] { "COL1", "COL2" };
var tableName = "TABLE_1";
var prefix = "@"; // TODO get this from the provider factory
string sqlInsert = string.Format(
"INSERT INTO {0}\n({1}) VALUES\n({2})",
tableName,
string.Join(", ", columns),
string.Join(", ", columns.Select(c => prefix + c)));
生成されたSQL:
INSERT INTO TABLE_1
(COL1, COL2) VALUES
(@COL1, @COL2)
これは、SqlClientで動作します。しかし、私はSystem.Data(DbCommand
、DbParameter
など)の抽象クラスと、Oracle、MySQL、Postgresなどのさまざまなデータプロバイダを、app.configの接続文字列設定に基づいて使用しています。したがって、私はどのプレフィックスを使用する必要があるかを知る必要があります。 MS-SQLの場合は@
、オラクルは:
を使用していますが、実際は分かりません。
このプレフィックス文字をプロバイダファクトリから取得する方法はありますか?
System.Data.SqlClient.SqlClientFactory.Instance
このような情報はありません、または少なくとも私はそれを見つけることができませんでした。
それ以外の場合は、共通データベースのリストを教えてください。
を編集します。ターゲットプラットフォームは.NET 2から.NET 4で、情報はプロバイダの工場から入手できます。
SQLの生成に使用したコードを提供できますか? – mellamokb