Оператор '=' не определен для 'Nothing' и введите 'OleDbCommand'

2013-07-06 2 views
0

нужна ваша помощь для ниже кодирования, im пытается создать форму входа в систему на vb.net, но система показывает ошибку "Operator '=' is not определенный для «Nothing» и тип «OleDbCommand» ».Оператор '=' не определен для 'Nothing' и введите 'OleDbCommand'

ниже моего кодирования

enter code here 


    Dim MyOledbCommand As OleDbCommand = New OleDbCommand() 

    If MyCommand = New OleDbCommand("SELECT * FROM Login WHERE username = '" & txtuser.Text & "' and password ='" & _ 
           txtpass.Text & "'", OleDbConn) Then 
     MsgBox("Login Success") 
     Form1.Show() 
    Else 
     MsgBox("Login Failed") 

    End If 
+0

hi paul, вы можете показать мне пример? спасибо – user2334112

ответ

2

Создание нового OleDbCommand на самом деле не собирается выполнить его на всех, и не является допустимым условием для If заявления. Я подозреваю, что вы хотите что-то вроде:

Dim sql = "SELECT COUNT(*) FROM Login WHERE username = ? and password = ?" 
Dim count As Integer 
Using command As OleDbCommand = New OleDbCommand(sql, OleDbConn) 
    command.Parameters.Add("@User", OleDbType.VarChar).Value = txtuser.Text 
    command.Parameters.Add("@Password", OleDbType.VarChar).Value = txtpass.Text 
    count = CInt(command.ExecuteScalar()) 
End Using 

If count > 0 Then 
    MsgBox("Login Success") 
    Form1.Show() 
Else 
    MsgBox("Login Failed") 

точного синтаксиса может быть немного (я не программист VB), но суть его должна быть в порядке. Примечания:

  • Я использую оператор Using, чтобы команда была автоматически расположена в конце блока. Вы должны сделать то же самое для своего соединения. Если вы пытаетесь сохранить одно и то же соединение открытым для всей программы, вы не должны. Пусть пул соединений справится с этим.
  • Я использую параметризованный SQL вместо того, чтобы поместить значения непосредственно в SQL. Это важно, чтобы избежать SQL injection attacks. Даже если это всего лишь игрушечный проект, вы должны сразу привыкнуть к параметризованному SQL.
  • Я выбираю счет строк, а не самих строк. Нам нужно только знать, есть ли подходящие пользователи, соответствующие критериям.
  • Вы не должны делать это (или любую другую работу с базой данных) в потоке пользовательского интерфейса. Используйте BackgroundWorker или асинхронные методы.
  • Вы должны никогда хранить пароли в виде открытого текста, поскольку он, кажется, вы здесь. Я действительно надеюсь, что это игрушечное приложение, поскольку на данный момент оно отчаянно небезопасно. Опять же, постарайтесь рано влезть в хорошие привычки.
+0

Совершено, спасибо, Джон Скит, высоко оценил – user2334112

Смежные вопросы