【发布时间】:2022-01-10 15:08:25
【问题描述】:
我正在尝试使用此代码创建数据库:
var createDatabaseQuery = "exec ('CREATE DATABASE ' + @db)";
var sqlCommand = new SqlCommand(createDatabaseQuery, sqlConnection);
sqlCommand.Parameters.Add("@db", SqlDbType.Text);
sqlCommand.Parameters["@db"].Value = "DbName";
sqlCommand.ExecuteNonQuery();
上述工作完美,但我尝试按如下方式进行连接,它会引发异常:
var sqlCommand = new SqlCommand(createDatabaseQuery, sqlConnection);
sqlCommand.Parameters.Add("@db", SqlDbType.Text);
sqlCommand.Parameters["@db"].Value = "DbName" + CustomId; //Doing the concatenation here
例外:
System.Data.SqlClient.SqlException (0x80131904): '-' 附近的语法不正确
我知道,可能有更好的方法来做到这一点。但是有什么办法可以使上述工作?
【问题讨论】:
-
为什么你的查询中有
-,是来自CustomId吗?如果您将查询更改为exec ('CREATE DATABASE @db')或只是CREATE DATABASE @db,会发生什么? -
@Luke Vo 发生了同样的事情。
-
CustomId包含什么?奇怪的是,错误标识了“-”字符,但我在查询中的任何地方都看不到该字符。您确定错误来自发布的查询吗? -
我正在为 CustomId @JohnG 使用 guid。得到它并工作。