Does anyone know why the first code works but the second does not? At the second I get exception (wrong syntax near @databaseName).
First Code
public void CreateDatabase(string databaseName)
{
string command = "CREATE DATABASE " + databaseName;
using (SqlConnection sqlConn = new SqlConnection(_sqlConnectionStringBuilder.ToString()))
{
sqlConn.Open();
using (SqlCommand sqlComm = new SqlCommand(command, sqlConn))
{
sqlComm.ExecuteNonQuery()
}
}
}
Second Code
public void CreateDatabase(string databaseName)
{
string command = "CREATE DATABASE @databaseName"; \\I tried both
string command = "CREATE DATABASE '@databaseName'"; \\I tried both
using (SqlConnection sqlConn = new SqlConnection(_sqlConnectionStringBuilder.ToString()))
{
sqlConn.Open();
using (SqlCommand sqlComm = new SqlCommand(command, sqlConn))
{
sqlComm.Parameters.Add(new SqlParameter(@"databaseName", databaseName));
sqlComm.ExecuteNonQuery()
}
}
}
In TSQL the general rule is you can't parameterize Data Definition Language (DDL) statements at all. And you can't use parameters in place of identifiers in Data Manipulation Language (DML) statements.