【解決方法】VB 10 で大文字と小文字を区別するログイン フォームを作成する


パスワードのフィールドで大文字と小文字が区別されるログイン フォームを作成したい例として、パスワードが “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 は大文字と小文字を区別しないことに注意してください!)、次のように実行できます…

SQL
SELECT *
FROM Usr
WHERE UserName = @UserName COLLATE Latin1_General_CS_AS;

@UserName は、ユーザーがログインフォームに書き込んだユーザー名を保持する変数です…

コメント

タイトルとURLをコピーしました