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
お恥ずかしながらまだコード体系が理解できておらず、的外れ、頓珍漢な考えがあるかも知れませんが、
ご教授のほど、よろしくお願いいたします。
> 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が違うかもしれないしパスが違うかもしれない)というやりかたにします。