2016-05-09 8 views
-1

ich bin ein Anfänger in vb.net und wenn ich meine Codierung den Fehler "Eine unbehandelte Ausnahme vom Typ 'System.InvalidOperationException' in System.Data.dll aufgetreten "Ich weiß nicht, was zu tun ist. Das ist mein Code."Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' ist in System.Data.dll aufgetreten" visual studio vb.net mit Datenbank Microsoft Access

Dim cmd As New OleDbCommand("SELECT * FROM [login] WHERE [ID] & [Password] =" & TextBoxUsername.Text & TextBoxPassword.Text & "", myConnection) 

    myConnection.Open() '*its keep pointing at this* 

    Dim dr As OleDbDataReader = cmd.ExecuteReader 
    Dim userFound As Boolean 
    Dim userID As String = "" 
    Dim UserPassword As String = "" 
    While dr.Read 
     userFound = True 
     userID = dr("ID").ToString 
     UserPassword = dr("Password").ToString 
     Form2.Show() 
     Me.Hide() 
    End While 
    If userFound = False Then 
     MessageBox.Show("Invalid Username/Password") 
     'Button","User Validation", MessageBoxButton.OK , MessageBoxIcon.Error)' 
    End If 
    myConnection.Close() 
End Sub 

End Class **

+0

http://www.tutorialspoint.com/sql/ – Plutonix

+2

Mögliche Duplikat von [Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' aufgetreten in System.Data.dll] (http: // stackoverflow.com/questions/17475839/an-unhandled-exception-of-type-system-invalidoperationexception-ccurred-in-sy) – Matheno

+1

Bitte lesen [mcve] und die se Ction an der Unterseite über das Debuggen kleiner Programme. – AdrianHHH

Antwort

0

Sie sind momentan nicht Ihre Parameter in einfachen Anführungszeichen Einwickeln und Ihre WHERE-Klausel Syntax off zu sein scheint. Es ist wahrscheinlich, dass Sie so etwas wie dies wollen:

"SELECT * FROM [login] WHERE [ID] = '" & TextBoxUsername.Text & "' AND [Password] = '" & TextBoxPassword.Text & "'" 

Ein größeres Problem hier ist, dass man Parameter verwendet werden, sollten Sie Ihre Abfrage zu erstellen, die nur Sie Fragen wie diese vermeiden können nicht helfen, aber es kann auch unangenehme Dinge zu verhindern, wie SQL Injection:

' Build your connection ' 
Using(Dim myConnection As New OleDbConnection("{your-connection-string"})) 
    ' Use parameters in your query ' 
    Dim query = "SELECT * FROM [login] WHERE [ID] = ? AND Password = ?" 
    ' Build your command to execute ' 
    Using(Dim myCommand As New OleDbCommand(query, myConnection)) 
     ' Open your connection ' 
     myConnection.Open() 
     ' Add your parameters (these will replace the ? in your query) 
     myCommand.Parameters.AddWithValue("@ID",TextBoxUsername.Text) 
     myCommand.Parameters.AddWithValue("@Password",TextBoxPassword.Text) 
     Using(Dim myReader = myCommand.ExecuteReader()) 
       If myReader.HasRows Then 
        ' Do stuff ' 
        userFound = True 
        userID = dr("ID").ToString 
        UserPassword = dr("Password").ToString 
        Form2.Show() 
        Me.Hide() 
       Else 
        ' Do other stuff ' 
        MessageBox.Show("Invalid Username/Password") 
       End If 
     End Using 
    End Using 
End Using 
Verwandte Themen