dyooshi Ответов: 1

Ошибка VB2010 "первое случайное исключение типа" system. invalidoperationexception " произошло в system.data.dll "


Привет,я получил эту ошибку в моем непосредственном окне, когда я пытаюсь отладить. Я пытаюсь вставить данные в таблицу в Microsoft Access. Также кажется, что мне не удалось подключиться к базе данных. Вот код, который у меня есть.

Private Sub Button3_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button3.Щелчок
- Проверьте, пусто ли имя пользователя или пароль
Если PasswordTextBox.Text = "" Или UsernameTextBox.Text = "" Тогда
Ящик для сообщений.Show ("пожалуйста, заполните необходимые поля..", "ошибка аутентификации", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
Ещё
- Оба поля были снабжены
'Проверьте, существует ли пользователь в базе данных
"Подключение к БД
Дим Конна, так как новая система.Данных.Oledb для.Метод oledbconnection()
Коннектикут.Параметр ConnectionString = "Поставщика=Майкрософт.Туз.Oledb для.12.0;Источник данных=С:\Пользователи\пользователь1\документы\PutLock.# то # "

Попробуй
- Конн.Открыть()
'MsgBox ("Успех")

Dim sql As String = " SELECT * FROM PutLockSignUp WHERE Username='" & UsernameTextBox.Текст & "' и пароль = '" & PasswordTextBox.Текст &"'"
Dim sqlCom как новая система. Data.Oledb для.Объект oledbcommand(среда SQL, соед)

'Открыть Соединение С Базой Данных
sqlCom.Соединение = conn
Коннектикут.Открыть()

Дим sqlRead как системы.Данных.OleDb. OleDbDataReader = sqlCom.Метода executereader()

Если sqlRead.Прочитать() Тогда
Формы Form2.Показать()
Меня.Скрыть()

Ещё
"Если пользователь вводит неверную комбинацию имени пользователя и пароля
"Бросьте сообщение об ошибке
Ящик для сообщений.Show ("имя пользователя и пароль не совпадают..", "сбой аутентификации", MessageBoxButtons.Хорошо, MessageBoxIcon.Восклицание)

- Очистить все поля
PasswordTextBox.Текст = ""
UsernameTextBox.Текст = ""

"Сосредоточьтесь на поле имени пользователя
UsernameTextBox.Сосредоточить()
Конец, Если

Поймать ex как исключение
Ящик для сообщений.Show ("не удалось подключиться к базе данных..", "ошибка подключения к базе данных", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка)
Конец Попытки

Конец, Если
Конец Подводной Лодки

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

Я попытался найти решение в google, но не смог понять некоторых объяснений, так как я все еще новичок в этой области. VB.NET. Кстати, это мое школьное задание. Пожалуйста, помогите мне.

Richard Deeming

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

1 Ответов

Рейтинг:
10

OriginalGriff

Здесь есть несколько очень неправильных вещей.
Во-первых, вы никогда не должны объединять строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
Конкатенация строк как часть вашей процедуры входа в систему невероятно глупа, поскольку она позволяет любому делать с вашей БД все, что он хочет, даже не имея действительного логина. Или действительно полностью обойти ваш логин...

Второе так же плохо: никогда не храните пароли в открытом тексте-это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]- это на C#, а не на VB, но это довольно просто понять.

Исправьте их, и проблема, которую вы заметили, вероятно, исчезнет в то же самое время...