SqlConnectionCommand (СОЗДАТЬ БАЗУ ДАННЫХ) - PullRequest
0 голосов
/ 04 мая 2018

Кто-нибудь знает, почему первый код работает, а второй нет? На втором я получаю исключение (неправильный синтаксис рядом с @databaseName).

Первый код

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

Второй код

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

1 Ответ

0 голосов
/ 04 мая 2018

В TSQL общее правило заключается в том, что нельзя вообще параметризировать операторы языка определения данных (DDL). И вы не можете использовать параметры вместо идентификаторов в операторах языка управления данными (DML).

...