我想运行一个类似的脚本:
CREATE LOGIN [me] WITH PASSWORD = @0
并按以下方式运行:
var createUserCommand = conn.CreateCommand();
createUserCommand.CommandText = script;
createUserCommand.Parameters.AddWithValue("@0", passwordDecrypted);
但是,这会引发:
类型' System.Data.SqlClient.SqlException'的第一次机会异常。发生在System.Data.dll中 附加信息:' @ 0'。
附近的语法不正确
从我在线阅读(无处官方,仅从SO答案/评论),不可能将SQL参数与DDL语句一起使用。欢迎链接到官方文档!
行。我确实需要这个参数化。在我看来,有两个选择:
.Replace("'", "''"
)=>我怎么能做到最好?最好的方法是什么?
答案 0 :(得分:0)
您需要逃脱的只是单'
到2 x '
commandText = string.Format("CREATE LOGIN [me] WITH PASSWORD = '{0}'", pass.Replace("'", "''"));
另一种方法是使用密码参数创建存储过程,并使用它来构建CREATE LOGIN
字符串,然后sp_executeSQL
。