[ad_1]
パスワードのフィールドで大文字と小文字が区別されるログイン フォームを作成したい例として、パスワードが “PassWord” の場合、キーワード “PassWord” のみを受け入れ、”password” または “PASSWORD” キーワードなどを受け入れません。文字が必要です。機密性の高い感謝 助けてください 私は DATABASE MS ACCESS を使用する新しいプログラマーです ありがとう これが私のコードです 問題は、パスワード フィールドで大文字と小文字が区別されるログイン フォームを作成できないことです
Private Sub btnLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLog.Click Try Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\NIASecurity.accdb") Dim cmd As OleDbCommand = New OleDbCommand("SELECT [Username] FROM [Security] WHERE [Username] = @User and Password =@Pass ", con) cmd.Parameters.AddWithValue("@User", txtUser.Text) cmd.Parameters.AddWithValue("@Pass", txtPass.Text) con.Open() Dim sdr As OleDbDataReader = cmd.ExecuteReader() If sdr.Read Then If txtPass.Text = sdr(0) Then MessageBox.Show("Welcome") Dim win As New frmAdd win.MdiParent = frmMDI win.Show() Me.Close() Else MsgBox("Invalid name or password!") End If End If Catch ex As Exception MessageBox.Show("Invalid name or password!") End Try End Sub
解決策 1
SAのコメントをよく読んでください! パスワードで大文字と小文字を区別する必要がない理由を説明します。 HelloWorld のハッシュは、helloworld! のハッシュと同じではありません。
大文字と小文字を区別するデータが必要な場合は、他のデータ(ケースの名前など)について、正しいものを選択する必要があります 照合[^] データベースまたは使用 照合する[^] 単一のデータ列/変数で、必要に応じて大文字と小文字を区別または区別しません!!!
いくつかのサンプルを見てみましょう…
Latin1_General_CI_AS の照合を持つデータベースがあると想像してください。これは、大文字と小文字を区別せず、アクセントを区別して比較するユニコードの Latin1 部分を意味します…
これで、PswHash、UserName という 2 つの列を持つテーブル (Usr) ができました。
UserName の大文字と小文字を区別して比較したい場合 (DB は大文字と小文字を区別しないことに注意してください!)、次のように実行できます…
SELECT * FROM Usr WHERE UserName = @UserName COLLATE Latin1_General_CS_AS;
@UserName は、ユーザーがログインフォームに書き込んだユーザー名を保持する変数です…
[ad_2]
コメント