I want to generate several SQL statements based on a column list using the column names as parameters.
Edit: C#
var columns = new string
There are 2 DbCommandBuilder methods that will help you, GetParameterName and GetParameterPlaceholder. These are protected, so you'll need a little reflection to use them.
Check out my answer to the following question for an implementation (also included in the DbExtensions library):
What are your favorite extension methods for C#? (codeplex.com/extensionoverflow)
I found the answer, but I cannot reproduce how I found it:
http://www.codewrecks.com/blog/index.php/2007/09/06/about-parametermarkerformat/
The DbConnection can provide a schema table that also contains the correct format strings for creating command parameter names, except for SqlClient!!
DbProviderFactory myFactory = DbProviderFactories.GetFactory(myProviderName);
using (DbConnection myConnection = myFactory.CreateConnection())
{
myConnection.ConnectionString = mySettings.ConnectionString;
myConnection.Open();
string parameterMarker = myConnection
.GetSchema(DbMetaDataCollectionNames.DataSourceInformation)
.Rows[0][DbMetaDataColumnNames.ParameterMarkerFormat].ToString();
myConnection.Close();
}
For SqlCclient
parameterMarker
is {0}
but should be @{0}
. I'll investigate a bit more to find out what is contained in the other schema table columns.