2016-06-12 6 views
1

SQLデータソースの管理者か顧客かを確認するログインページを作成しようとしています。なぜそれがMySQLCommandを理解できないのか分かりません。私は参考文献にMySql.Dataを追加しましたが、これはうまくいかないようです。vbコードのMySQLコマンドが機能していません

例:MySqlConnectionおよびMySqlCommandには青色の下線が付きます。

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

エラー(もしあれば)はどうなりますか? – Steve

+0

そして、右クリックすれば 'Resolve'オプションがありますか? – GSerg

+0

@Steve Type 'MySQLComman'は定義されていません –

答えて

1

Password is a reserved word in MySql。あなたは毎回あなたのコードでそれを使用し、その名前のフィールドを使用したい場合は、バッククォートの間にそれを置くことを覚えておく必要があります。

`password` = ... 

はあなたのコードが深刻な問題を抱えていると述べました。ユーザー入力からの文字列を連結して、SQLテキストを形成してはいけません。これにより、構文解析の問題とSQLインジェクション攻撃に起因する構文エラーが発生します。パフォーマンスの理由でデータベースにアクセスするために旅行を最小限にしたいので、あなたが最後にあなたはまた、あなたのデータを取得する方法を変更する必要があり、この

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 
     .... 

のようにパラメータ化クエリを使用しshoul。単一のクエリでNameとEMailの両方を選択し、MySqlDataReaderを使用してデータを取得する必要があります。

コード内に存在するその他の問題は、接続に関連する適切な使用に関する記述が不足していることと、データベースに格納されているクリアテキストのパスワードによって発生するセキュリティの問題です。

+0

ありがとうございました。 私はこれで新しく、それを単純に保つようにしているので、私はsqlinjectionsを止める方法を考えていませんでした。これは私のコードがおそらくあまりきれいではない理由です。 例: 'Dim con As MySqlConnection =新しいMySqlConnection()' は、 'MySqlConnection'が定義されていないことを示しています。 –

+0

MySql.Data.dllライブラリへの参照を追加してから、Imports MySql.Data.MySqlClientを追加しましたか?ライブラリを使用してMySqlデータベースにアクセスする場合は、これらの手順は基本的です。 – Steve

+0

YES!私は一番上にMySql.Data.MySqlClientを忘れてしまった!私はそれを考え出した。 ありがとう –

0

@GSergは、私が右クリックして解決できるかどうか尋ねました。 私はそれを試みましたが、それはオプションではありませんでした。 はエラーをいじりの後、私が先頭に書かなければならなかったことが表示されます:

Imports MySql.Data.MySqlClient 

私も@Steveが私を思い出したように私は、MySQLのための単語のパスワードを使用したときにバッククォートを追加する必要がありました。

ありがとうございました!

関連する問題