I want to generate several SQL statements based on a column list using the column names as parameters.
Edit: 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)));
Generated SQL:
INSERT INTO TABLE_1
( COL1, COL2) VALUES
(@COL1, @COL2)
This works with the SqlClient. But I'm using the abstract classes in System.Data (DbCommand, DbParameter, etc.) and different data providers such as Oracle, MySQL, Postgres etc based on the connection string settings in the app.config. Thus I need to know which prefix I have to use. For MS-SQL it is the @, Oracle uses the :, the rest I actually don't know.
Is there a way to get this prefix character from the provider factory?
System.Data.SqlClient.SqlClientFactory.Instancedoesn't have such an information or at least I couldn't find it.
Otherwise, can you give me a list for the common databases?
Edit: The target platforms are .NET 2 to .NET 4 and the information should be available through the provider factory.