Muhammad nur Ihsan Ответов: 2

C# (login form) получение ошибки с db после создания файла .exe


извините за мой английский и новичок в этом деле
я пытаюсь создать приложение формы входа в систему с datatable в visualstudio

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

всплывающее окно говорит:

Авторизоваться
X необработанное исключение произошло в вашем приложении..-

Попытка прикрепить базу данных с автоматическим именем для файла C:\users\user\Documents\testlogin.mdf не получилось. Существует база данных с таким же именем,
или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.

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

Извините за язык

LoginButton
private void btnLogin_Click(object sender, EventArgs e)
       {
           SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\iSunner\Documents\testlogin.mdf;Integrated Security=True;Connect Timeout=30");
           SqlDataAdapter sda = new SqlDataAdapter("select count(*) from login where username ='" + TxtUsername.Text + "' and password='" + txtPassword.Text + "'", conn);
           DataTable dt = new DataTable();
           sda.Fill(dt);
           if (dt.Rows[0][0].ToString() == "1")
           {
               this.Hide();
               ListMeja lm = new ListMeja();
               lm.Show();
           }
           else
           {
               MessageBox.Show("Username/password salah", "ADUH!", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }

       }

2 Ответов

Рейтинг:
1

Patrice T

SqlDataAdapter sda = new SqlDataAdapter("select count(*) from login where username ='" + TxtUsername.Text + "' and password='" + txtPassword.Text + "'", conn);

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Muhammad nur Ihsan

итак ... есть идеи, как лучше всего сделать форму входа в систему? я новичок в этом sry

Рейтинг:
0

Member 13292891

String Query="Select Count(*)from LogInfo where UserName=@uname and PassWord=@pwd;
SqlCoomad cmd=new SqlCoomand(Query,conn);
cmd.параметр.Добавить(новый SqlParameter ("@Uname",Textbox1.Text));
cmd.параметр.Добавить(новый SqlParameter ("@pwd",Textbox2.Text);


Muhammad nur Ihsan

я все еще получаю ошибку, которую вы можете помочь исправить?

Объект sqlconnection соед = новый объект sqlconnection(@"источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=|параметр datadirectory|\testlogin.МДФ;Комплексная безопасность=true;в подключения таймаут=30");
Строка запроса = "выбрать количество(*)из Логинфо, где имя пользователя='@команде uname" + TxtUsername.Текст + "' и пароль='@pwd" + txtPassword.Текст + "'";
SqlCommand cmd = new SqlCommand(Query, conn);
cmd.параметры.Add(new SqlParameter ("@Uname", TxtUsername.Текст));
cmd.параметры.Добавить(новый SqlParameter ("@pwd", txtPassword.Text));
DataTable dt = новый DataTable();
if (dt.Rows[0][0].ToString() == "1")
{
этот.Скрыть();
ListMeja lm = новый ListMeja();
лм.Покажите();
}