0
Private Sub btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ok.Click
    mysqlconn.Open()
    cmd.CommandText = "select *  from login "
    cmd.Connection = mysqlconn
    dr = cmd.ExecuteReader
    dr.Read()

    If txtuser.Text = "" And txt_password.Text = "" Then
        MsgBox("Please enter user name and password", MsgBoxStyle.Information, "Login form")
    Else
        If txtuser.Text = "" Then
            MsgBox("Please select user name", MsgBoxStyle.Information, "Login form")
        Else
            If txt_password.Text = "" Then
                MsgBox("Please enter password", MsgBoxStyle.Information, "Login form")
                'If (dr.FieldCount > 0) Then

                'Dim i As Integer = dr(1)
                ' For i = 1 To dr.FieldCount

                'user = dr("user").ToString
                ' password = dr("password").ToString
            ElseIf ((txtuser.Text = '" & txt_username.text & "') And (txt_password.Text = '" & txt_password.text & "')) Then
          form2.Show()


            Else : MsgBox("Password missmatch.", vbCritical, "Invalid password")
            End If
        End If
        End If
    dr.Close()

    cmd.Dispose()

    mysqlconn.Close()
    mysqlconn.Dispose()

End Sub

ログインテーブルが1つあります。ユーザー名とパスワードは2列です。上記のコードのログインテーブルからアプリケーションのユーザー名とパスワードを取得しようとしていますが、2つのrowrs(1)ユーザー名があるため、ログインテーブルから2行目のエントリを取得できません。 = abc、passowrd = abc 2)username = xyz、password = xyz)実行時に2番目のログインエントリを取得するにはどうすればよいですか?ありがとう

4

2 に答える 2

0

カップル (ユーザー名、パスワード) を確認することが目的の場合は、DataReader ではなくテーブルでカップルを検索してください。ここでの唯一の仮定は、ペア (ユーザー名、パスワード) がログイン テーブル内で一意であることです。

この場合、クエリで 2 つのパラメーターを使用します。

cmd.CommandText = "SELECT * FROM login WHERE user = @username AND password = @password"
cmd.Parameters.Add(new SqlParameter("username", username))
cmd.Parameters.Add(new SqlParameter("password", password))

'then execute and check the results:
dr = cmd.ExecuteReader()
if dr.Read() then
  'login successful
else
  'login failed
end
于 2012-07-12T08:20:09.873 に答える
0

aを使用DataTableしてすべての行を保持するか、 を使用DataReader.Readしてリーダーを次のレコードに進めることができます。

  1. DataTable

    Dim tblUsers = New DataTable
    Using con = New MySql.Data.MySqlClient.MySqlConnection(conString)
        Using da = New MySql.Data.MySqlClient.MySqlDataAdapter("select *  from login", con)
            da.Fill(tblUsers)
        End Using
    End Using
    
    If tblUsers.Rows.Count > 1 Then
        Dim user = tblUsers.Rows(1).Field(Of String)("User")
        Dim password = tblUsers.Rows(1).Field(Of String)("Password")
    End If
    
  2. データリーダー:

    Using con = New MySql.Data.MySqlClient.MySqlConnection(conString)
        Using cmd = New MySql.Data.MySqlClient.MySqlCommand("select *  from login", con)
            Using reader = cmd.ExecuteReader()
                If reader.Read Then
                    ' first user '
                    If reader.Read Then
                        ' second user '
                        Dim user = reader.GetString("User")
                        Dim password = reader.GetString("Password")
                    End If
                End If
            End Using
        End Using
    End Using
    
于 2012-07-12T08:15:54.110 に答える