Naveen Roy Ответов: 1

Почему параметризация запроса не работает


У меня есть глупая проблема, когда я проверяю имя пользователя пароль в моей форме входа в систему, но .... Но это не работает...

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

Dim ole as new oledb.oledbcommnd()
ConnectData() ' database connection procedure
ole.connection = conn
Ole.commandText = "select * from login where user = '@usern' and pass = '@pass'"

Ole.parameters.add("@usern",oledbtype.varchar,30).value = username 'username is string type variable
ole.parameters.add("@pass",oledbtype.varchar,30).value = password 'password is string type variable

Dim dr as oledb.oledbdatareader = ole.executereader

if dr.read() then
   dr.close
   Return true
Else
   Dr.close
   Return false
End if

Naveen Roy

Его всегда возвращает false, даже я ввожу правильный пароль, логин

1 Ответов

Рейтинг:
7

Wendelius

Когда вы используете параметры, вы не используете апострофы для значений. Так что вместо

Ole.commandText = "select * from login where user = '@usern' and pass = '@pass'"

пробовать
Ole.commandText = "select * from login where user = @usern and pass = @pass"

Другое дело, что вы должны правильно распорядиться предметами. Самый простой способ-использовать using блок. Например, взгляните на Правильное выполнение операций с базой данных[^]

И в-третьих, вы, кажется, храните пароль в виде обычного текста. Если это действительно так, вы должны исправить это как можно скорее. Взгляните на Хранение паролей: как это сделать.[^]


Naveen Roy

Я знаю, что должен избавиться от всего объекта ... Но как я могу набрать весь код с мобильного телефона?... Ну спасибо ваш ответ правильный

Wendelius

Рад, если это помогло. Однако обратите внимание на комментарий о хранении паролей.

Maciej Los

5ед!

Wendelius

Спасибо