Как передать параметры в запрос в ASP.NET
Я пытаюсь создать sql-логин через веб-приложение, я пытаюсь выполнить запрос для создания пользователя, но мои параметры передаются в виде строки. не знаю, что я делаю не так.
Что я уже пробовал:
string sql = @"CREATE LOGIN @Username WITH PASSWORD= @Password, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO USE @DatabaseName GO CREATE USER @Username FOR LOGIN @Username GO USE @DatabaseName GO EXEC sp_addrolemember @RoleName, @Username "; SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnstr"].ToString()); SqlCommand cmd = new SqlCommand(sql, cn); cn.Open(); cmd.Parameters.Add("@Username", SqlDbType.NVarChar).Value = txtuser.Text; cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = txtpass.Text; cmd.Parameters.Add("@DatabaseName", SqlDbType.NVarChar).Value = dbList.Text; cmd.Parameters.Add("@RoleName", SqlDbType.NVarChar).Value = roleList.Text; cmd.ExecuteNonQuery();
F-ES Sitecore
Они передаются как строка, поскольку вы определяете их как nvarchar
Значения sqldbtype.Тип nvarchar
измените этот тип на тот, который вам нужен.
Member 14107277
Я имел в виду, что параметры вообще не передаются. я попытался отладить, чтобы посмотреть на запрос и его просто @Username, @Password вместо ввода пользователем в текстовом файле.
Так я получаю сообщение об ошибке: неправильный синтаксис рядом с @Имя_пользователя
OriginalGriff
А как вы ожидали, что их примут? Пицца с пепперони?
Они передаются как строки, потому что это то, что вы сказали им передать как: NVARCHAR-это строка (в частности, строка Unicode)
Так в чем же проблема? Почему ты думаешь, что они не должны быть струнами?
Member 14107277
Я имел в виду, что параметры вообще не передаются. я попытался отладить, чтобы посмотреть на запрос и его просто @Username, @Password вместо ввода пользователем в текстовом файле.
Так я получаю сообщение об ошибке: неправильный синтаксис рядом с @Имя_пользователя
ZurdoDev
Я никогда не использую этот синтаксис.
Попробуй
cmd.параметры.AddWithValue("@paramName", txt1.Text);
Member 14107277
Попробовать это. Я все еще получаю ту же ошибку "неверный синтаксис @Username"
cmd1.параметры.AddWithValue("@Username", txtuser.Text);
cmd1.параметры.AddWithValue ("@Password", txtpass.Text);
cmd1.параметры.AddWithValue("@DatabaseName", dbList.Text);
cmd1.параметры.AddWithValue("@RoleName", roleList.Text);
ZurdoDev
Он может не работать с CREATE LOGIN. Я бы поискал примеры в google, их там, скорее всего, тонны.