传递SQL Login作为参数
本文关键字:参数 Login SQL 传递 | 更新日期: 2023-09-27 18:14:08
我对MS SQL不是很有经验,所以我很抱歉,如果这是一个非常愚蠢的问题,但是我在互联网上找不到任何关于它的真实信息。
因此,我要创建一个SQL Login和一个SQL User,它是这样的
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
那么它确实工作!
所以,我想弄清楚我在那里做什么。提前感谢!
CREATE
语句为Data Definition Language
(DDL)语句。
SqlCommand.Parameters
。
数据操作语言=
SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...
数据定义语言=
CREATE TABLE ...
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
AFAIK,没有办法用参数来写这个。您需要将它们用作SQL的一部分。