Member 12650438 Ответов: 3

Получаю ошибку даже логин и пароль от базы данных SQL-сервера


вот мой код для кнопки входа в систему в приложении c# windows forms


private void button1_Click_1(object sender, EventArgs e)
      {
          string cs = @"Data Source=.;Database=master;Integrated Security=True;";


          if (textBox1.Text == "" || textBox2.Text == "")
          {
              MessageBox.Show("Please provide UserName and Password");
              return;
          }
          try
          {
              //Create SqlConnection
              SqlConnection con = new SqlConnection(cs);
              SqlCommand cmd = new SqlCommand("Select * from Register where UserNmae=@username and Password=@password", con);
              cmd.Parameters.AddWithValue("@username", textBox1.Text);
              cmd.Parameters.AddWithValue("@password", textBox2.Text);
              con.Open();
              SqlDataAdapter adapt = new SqlDataAdapter(cmd);
              DataSet ds = new DataSet();
              adapt.Fill(ds);
              con.Close();
              int count = ds.Tables[0].Rows.Count;
              //If count is equal to 1, than show frmMain form
              if (count == 1)
              {
                  MessageBox.Show("Login Successful!");
                  this.Hide();
                  Dashboard dsb = new Dashboard();
              }
              else
              {
                  MessageBox.Show("Login Failed!");
              }
          }
          catch (Exception ex)
          {
              MessageBox.Show(ex.Message);
          }


Что я уже пробовал:

Я попытался подключить его к sql server, чтобы подключиться к таблице с полями.
он показывает ошибку после ввода правильного имени пользователя и пароля.

OriginalGriff

Какая ошибка? Есть ли сообщение?

Patrice T

Какое сообщение об ошибке и где ?

[no name]

Научитесь задавать вопросы, не повторяя одно и то же снова и снова.

3 Ответов

Рейтинг:
21

Karthik_Mahalingam

проверьте это заклинание UserNmae


Рейтинг:
17

Wendelius

Как уже указывалось, у вас, вероятно, есть ошибка в названии столбца, но...

Гораздо важнее то, что вы, кажется, обрабатываете пароли в обычном тексте, чтобы любой, кто имеет доступ к базе данных, мог видеть пароли пользователей. Этого никогда нельзя допускать. Никто, даже администратор базы данных, не должен знать, что такое пароль для человека.

Если вы подумаете об этом, вам нужно только проверить, есть ли пароль спички к тому, который пользователь предоставил при регистрации или начале использования системы. Это означает, что вам не нужно знать, что это за пароль, только если он точно такой же. Способ сделать это-использовать одностороннее хеширование. Сначала сохраните хэш для пароля, а затем проверьте, совпадает ли он при попытке входа в систему.

Для получения дополнительной информации пройдите через Хранение паролей: как это сделать.[^]

Еще одна важная вещь заключается в том, что вы используете master база данных для таблиц вашего приложения. Вы никогда не должны ставить ни один из ваших столов в master или любые другие системные базы данных. Как следует из названия, они должны быть зарезервированы только для системного использования. Общепринятой практикой является создание отдельной базы данных для вашей собственной системы.


Рейтинг:
11

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

Если Картик Бангалор правильно обнаружив проблему, вы получаете сообщение об ошибке на SQL server, сообщающее вам, что запрос использует неизвестный столбец.