Получить префикс параметра в ADO.NET

Я хочу сгенерировать несколько операторов SQL на основе списка столбцов, используя имена столбцов в качестве параметров.

Изменить : 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 это @ , Oracle использует : , остальное я на самом деле не знаю.

Есть ли способ получить этот префиксный символ от поставщика factory?

System.Data.SqlClient.SqlClientFactory.Instance не имеет такой информации, или, по крайней мере, я не смог ее найти.

В противном случае вы можете дать мне список общих баз данных?

Изменить : целевыми платформами являются .NET 2 - .NET 4, и информация должна быть доступна через фабрику провайдера.

6
задан matthias.lukaszek 1 August 2011 в 21:35
поделиться