#c# #sql-server
#c# #sql-сервер
Вопрос:
Мне трудно понять, что не так в моем коде. Цель состоит в том, чтобы перенести данные из регистрационной формы в ASP в столбцы моих пользовательских данных в моей базе данных SQL.
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
try
{
string cmd = "insert into UserLogin
values(@UserName,@Password)";
SqlConnection cnn = new SqlConnection(cmd);
SqlCommand cmd2 = new SqlCommand(cmd, cnn);
cmd2.Parameters.AddWithValue("@UserName", UsernameBox.Text);
cmd2.Parameters.AddWithValue("@Password", PasswordBox.Text);
cnn.Open();
cmd2.ExecuteNonQuery();
Комментарии:
1.
SqlCommand cmd2 = new SqlCommand(cmd, connection);
2.
what is wrong about my code
— Что не так? Вы получаете какую-либо ошибку?3. Надеюсь, вы не храните пароли в базе данных в виде обычного текста?
4. Хранение паролей в виде обычного текста — это в значительной степени преступная халатность. Если это не школьный проект, вам нужно немедленно это исправить. Пароли должны быть обработаны и хэшированы. Кроме того, AddWithValue имеет несколько довольно интересных нюансов, о которых вам нужно помнить. blogs.msmvps.com/jcoehoorn/blog/2014/05/12 /…
5. Да, это просто практика того, как это сделать, а не база данных, которая используется публично.
Ответ №1:
Вы используете строку подключения в connection
переменной, но переменная, в которую вы передаете SqlCommand
cnn
, не имеет связанной с ней допустимой строки подключения.
Я очистил ваш код и использовал using
block, чтобы обеспечить правильный способ удаления объекта. Пожалуйста, смотрите ниже:
string connectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
using (var con = new SqlConnection(connectionString))
{
string query = "insert into UserLogin values(@UserName, @Password)";
using (var cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@UserName", UsernameBox.Text);
cmd.Parameters.AddWithValue("@Password", PasswordBox.Text);
con.Open();
cmd.ExecuteNonQuery();
}
}
Ответ №2:
У вас есть две переменные SqlConnection и присвоение неправильной переменной в SqlCommand. Рабочий код будет:
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
try
{
string cmd = "insert into UserLogin values(@UserName, @Password)";
SqlCommand cmd2 = new SqlCommand(cmd, connection);
cmd2.Parameters.AddWithValue("@UserName", UsernameBox.Text);
cmd2.Parameters.AddWithValue("@Password", PasswordBox.Text);
cnn.Open();
cmd2.ExecuteNonQuery();