Как внедрить из Asp.net к базе данных SQL?

#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();