2016-06-12 5 views
1

Ich habe versucht, eine Anmeldeseite zu erstellen, die überprüft, ob Sie ein Administrator oder ein Kunde in meiner SQL-Datenquelle sind. Ich bin mir nicht sicher, warum es die MySQLCommand s nicht verstehen kann. Ich habe MySql.Data in den Referenzen hinzugefügt, aber das scheint nicht zu funktionieren.MySQL-Befehle in VB-Code funktionieren nicht

Hier ist zum Beispiel: MySqlConnection und MySqlCommand haben blaue Unterstreichung.

 Dim cmd As MySqlCommand = New MySqlCommand '(strSQL, con) 
+0

Welchen Fehler (wenn überhaupt) bekommen Sie? – Steve

+0

Und wenn Sie mit der rechten Maustaste darauf klicken, gibt es eine 'Resolve'-Option? – GSerg

+0

@Steve Typ 'MySQLComman' ist nicht definiert –

Antwort

1

Password is a reserved word in MySql. Wenn Sie ein Feld mit diesem Namen verwenden möchten, dann jedes Mal wenn Sie es in Ihrem Code verwenden sollten Sie daran denken, es zwischen Backticks zu setzen:

`password` = ... 

sagte, dass Ihr Code ernsthafte Probleme hat. Sie sollten keine Strings verketten, die von der Benutzereingabe kommen, um einen SQL-Text zu bilden. Dies führt zu Syntaxfehlern, die durch das Parsing-Problem und durch Sql-Injection-Angriffe verursacht werden. Sie shoul eine parametrisierte Abfrage wie diese

strSQL = "SELECT name FROM employer WHERE ([email protected] AND `password`[email protected]" 
    Dim cmd As MySqlCommand = New MySqlCommand(strSQL, con) 
    cmd.Parameters.Add("@login", MySqlDbType.VarChar).Value = strUser 
    cmd.Parameters.Add("@pwd",MySqlDbType.VarChar).Value = strPaswoord 
    con.Open() 
    If cmd.ExecuteScalar() = Nothing Then 
     .... 

verwenden Schließlich sollten Sie auch, wie Sie Ihre Daten erhalten ändern, weil Sie die Fahrten minimieren wollen die Datenbank für die Performance Grund zuzugreifen. Sie sollten sowohl den Namen als auch die EMail mit einer einzigen Abfrage auswählen und einen MySqlDataReader verwenden, um die Daten abzurufen.

Weitere Probleme, die in Ihrem Code vorhanden sind, sind das Fehlen einer geeigneten Benutzungsanweisung für die Verbindung und das Sicherheitsproblem, das durch ein in der Datenbank gespeichertes Klartextkennwort verursacht wird.

+0

Vielen Dank für Ihre Hilfe. Ich bin neu in all dem und versuche, es einfach zu halten, also habe ich nicht daran gedacht, sqlinjections zu stoppen. Das ist auch der Grund, warum mein Code wahrscheinlich nicht sehr sauber ist. Aber zum Beispiel: 'Dim Con As MySqlConnection = Neue MySqlConnection()' zeigt, dass MySqlConnection' ist nicht definiert. –

+0

Haben Sie den Verweis auf die MySql.Data.dll-Bibliothek hinzugefügt, und haben Sie dann ein Imports MySql.Data.MySqlClient hinzugefügt? Diese Schritte sind grundlegend, wenn Sie die Bibliothek für den Zugriff auf eine MySql-Datenbank verwenden möchten. – Steve

+0

JA! Ich habe MySql.Data.MySqlClient ganz oben vergessen! Ich habe das herausgefunden. Danke –

0

@GSerg fragte mich, ob ich mit der rechten Maustaste klicken und auflösen könnte. Ich habe das versucht, aber das war keine Option. Nach Herumspielen mit dem Fehler scheint es, dass ich am Anfang zu schreiben hatte:

Imports MySql.Data.MySqlClient 

musste ich auch hinzufügen, Backticks, wenn ich das Wort Passwort für MySQL verwendet als @Steve mich erinnerte.

Vielen Dank für Ihre Hilfe!