我将 ASP.NET (VB.NET) 与 SQL Server 一起使用,并希望允许用户从 Web 表单创建服务器登录名和数据库用户。
我通过执行创建登录名和用户的命令来完成这项工作:
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [" & login & "] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER " & username & " FOR LOGIN [" & login & "]; ",
connection)
cmd.ExecuteNonQuery()
和是我正在清理(尽我所能)并直接插入login
到. 虽然这是有效的,但我觉得我不应该这样做。username
CommandText
我希望有类似于参数化查询的东西,如下所示:
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [@login] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER @username FOR LOGIN [@login]; ",
connection)
cmd.Parameters.AddWithValue("@login", login)
cmd.Parameters.AddWithValue("@username", username)
cmd.ExecuteNonQuery()
但是,这不起作用,因为CREATE LOGIN
并且CREATE USER
似乎不允许参数化值,如podiluska 所述:
'@username' 附近的语法不正确。
有没有更好的方法从用户输入创建登录名和用户?