Search code examples
sql-serversqlconnection

SqlConnectionCommand ( CREATE DATABASE)


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()
          }
     }
}

Solution

  • 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.