我对MS SQL没有太多经验,所以如果这是一个非常愚蠢的问题,我会道歉 - 但我无法在Intenet上找到任何关于它的真实信息。
所以,我只是想为该登录创建一个SQL登录和SQL用户,它就是这样的:
SqlCommand CreateDatabaseUser = new SqlCommand("CREATE LOGIN @NewUserLogin " +
"WITH PASSWORD = '@NewUserPassword' " +
"CREATE USER @NewUserLogin FOR LOGIN @NewUserLogin", AddUserConnection);
CreateDatabaseUser.Parameters.AddWithValue("@NewUserLogin", NewUserLoginTextbox.Text);
CreateDatabaseUser.Parameters.AddWithValue("@NewUserPassword", PasswordTextbox.Text);
AddUserConnection.Open();
CreateDatabaseUser.ExecuteNonQuery();
我收到错误Incorrect syntax near '@NewUserLogin'
,但如果我这样做不正确且不安全:
"CREATE LOGIN " + NewUserLoginTextbox.Text +
" WITH PASSWORD = '" + PasswordTextbox.Text + "'" +
" CREATE USER " + NewUserLoginTextbox.Text + " FOR LOGIN " + NewUserLoginTextbox.Text
然后就可以了!
所以,我想知道我在那里做什么。提前谢谢!
答案 0 :(得分:1)
CREATE
statemen t是Data Definition Language
(DDL) statement。
SqlCommand.Parameters
操作支持Data manipulation language而不是 Data definition language 操作。
数据操作语言=
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
数据定义语言=
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
AFAIK ,没有办法用参数写这个。您需要将它们用作SQL的一部分。