MySQLサーバ上のデータで認証したい

タグの編集
投稿者 かんた  (社会人) 投稿日時 2009/9/4 02:20:24


先日は大変お世話になりました。
またご質問させていただきたいと思います。

ただいま、暗証番号入力画面を作成しております。

フォーム上には

Text_area
Text_pass
Cmd_login

が存在し、MySQLサーバへ登録されている
エリアコードとパスワードをそれぞれのテキストに入力後、ログインボタンをクリックし、
エリアコードとパスワードが一致した場合、
次のフォームへ遷移する「認証フォーム」を作成しています。
(MySQLサーバ、loginテーブル内、F_area、F_passを参照)


定数としエリアコード、パスワードをコード内に持つ認証のやり方は
インターネットや本を参考にして出来たのですが、
MySQLサーバの登録情報を認証するやり方がわかりません。

今現在、下記のコーディングまで記述しましたが、
なにぶんコーディング経験が浅いもので、
ここから躓いております。


Private Sub Cmd_login_Click()

    Dim area As TextBox             'IDを格納 
    Dim pass As TextBox             'パスワードを格納 
    Dim strTBL As Variant   ’テーブル名を格納
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim SQL1 As Variant   ’エリアコードSQL文
    Dim SQL2 As Variant     ’パスワードSQL文
    
    Set area = Me.Text_area
    Set pass = Me.Text_pass
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    strTBL = "login"  'テーブル名 
  
   'Mysqlへ接続 
   cn.Open "Driver={MySQL ODBC 3.51 Driver};SERVER = ●●●●;DATABASE=testdb;UID=suzuki;PWD=1234;STMT=SET CHARACTER SET cp932; "

   'テーブルを開く 
   rs.Open strTBL, cn, adOpenForwardOnly, adLockOptimistic, adCmdTable
   

    SQL1 = "SELECT * FROM login WHERE F_area"           'loginテーブルF_areaフィールド 
    SQL2 = "SELECT * FROM login WHERE F_pass"           'loginテーブルF_passフィールド 

    If area = SQL1 Then
        If pass = SQL2 Then     'ID・PASSが一致したらメイン画面が開く 
            f_main.Show
            Me.Hide
        Else        
    End If

   Set cn = Nothing
   Set rs = Nothing

End Sub



お恥ずかしながらまだコード体系が理解できておらず、的外れ、頓珍漢な考えがあるかも知れませんが、
ご教授のほど、よろしくお願いいたします。
投稿者 ?-?  (その他) 投稿日時 2009/9/4 02:28:34
それはSQLの部分とVBの部分の問題に分けないとならないような?

> SELECT * FROM login WHERE F_area
SQL文として成り立っていません。

F_area、F_passという部分なら、
SELECT * FROM login WHERE F_area = Text_area AND F_pass = Text_pass
というSQLを実行させて、結果が1行かどうかのチェックというようなやり方にするものかなーと。
私なら、
SELECT COUNT(*) FROM login WHERE F_area = Text_area AND F_pass = Text_pass
を実行させた結果でCOUNT(*)の結果が1件ならOK、それ以外はNG(IDが違うかもしれないしパスが違うかもしれない)というやりかたにします。