我们数据库中的模式名称是动态的。为什么不能继续工作?如何使用SqlCommand参数指定选择查询的模式名称
public void ReadVersion(string connString, string schemaName)
{
string selectCommand = "SELECT major FROM [@SchemaName].[version]");
using (SqlConnection sqlConn = new SqlConnection(connString))
{
using (SqlCommand cmd = new SqlCommand(selectCommand, sqlConn))
{
sqlConn.Open();
cmd.Parameters.AddWithValue("@SchemaName", schemaName);
object result = cmd.ExecuteScalar();
}
}
}
当命令执行时,参数值不被替换。这是SqlCommand参数的限制吗?
感谢Damien - 我对SQL的理解已经增长了,我现在看到我可以让我们的代码更加优雅,通过给DB用户运行时)DEFAULT_SCHEMA - 因为我们为每个模式创建一个匹配的唯一数据库用户 – GarethOwen 2012-02-02 09:53:02
嗨 - 我希望我不要necro这个线程,但它是可行的只是检查@SchemaName对sys.schemas来验证它? – 2014-01-02 23:23:57