Member 13512434 Ответов: 1

Ошибка мастера настройки источника данных. Нужна помощь


При попытке вставить объекты базы данных из моего access(2016) в мой C#(2015) я получаю непрерывную ошибку, когда нажимаю кнопку finish of ...

при обработке объектов базы данных произошла одна или несколько ошибок
<новый пользователь>
Не удалось получить информацию о схеме для таблицы или просмотра NewUser.'


Это мой текущий код...
Кто-нибудь может мне в этом помочь?

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DatabaseEmployees.accdb;Persist Security Info=True");
OleDbCommand command = new OleDbCommand();

int i = 0;
if (IDtbx.Text == string.Empty)
{
MessageBox.Show("Please log in");
}
command = new OleDbCommand("select count(*)from NewUser where Username= '" + IDtbx.Text + "' AND Password= '" + PSWtbx.Text + "'", connection);

if (connection.State == ConnectionState.Closed)
{
connection.Open();
i = (int)command.ExecuteScalar();
}

connection.Close();
if (i > 0)
{
MainSystem mainForm = new MainSystem();
mainForm.FormClosed += new FormClosedEventHandler(Login_FormClosed);
mainForm.Show();
this.Hide();
LoginError.Visible = false;
}

else
{
LoginError.Visible = true;
}

}


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

Я попробовал использовать все три другие мои базы данных, связанные с C#, удалив базу данных и начав все сначала

Suvendu Shekhar Giri

Вы уверены, что ваша таблица называется "NewUser"?
Обычно люди называют его "пользователи"/"UserLogins"/другие, и именно поэтому спрашивают.

Member 13512434

Да я дважды проверил и это правильное имя которое я использую

Sinisa Hajnal

Прежде всего, вы никогда не должны вставлять пользовательский ввод в запрос базы данных. Google SQL Injection для получения более подробной информации.

Ошибка может быть вызвана отсутствием интервала между count(*)от...кроме этого, есть ли схема в Access? Наконец, я бы использовал SQL Express, а не Access :)

Member 13512434

Извините, что вы подразумеваете под схемой в Access, пожалуйста? Я очень новичок в этом деле

1 Ответов

Рейтинг:
0

Patrice T

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