如何在数据表中查找特定行

时间:2013-05-03 21:54:47

标签: vb.net

我的目标是根据用户输入找到主键。

表格内容如下:UserID,account,password。

userID设置为主键和整数类型。

帐户设置为varchar类型。

密码设置为varchar类型。

这是我目前验证用户输入的代码。

Dim account As String = txtAcc.Text
    Dim password As String = txtPss.Text


    For Each Me.dr In atadap.GetData
        If dr.Item(1) = account And dr.Item(2) = password Then
            **[retrieve userID for specified data row]**
            MsgBox("Access granted!")
            Me.Hide()
            frmMenu.Show()
            Exit For
        Else
            MsgBox("Access denied!")
            txtAcc.Text = ""
            txtPss.Text = ""
            Exit For
        End If
    Next

以下是我在研究中使用的链接: http://msdn.microsoft.com/en-us/library/y06xa2h1.aspx

但仍然无法弄清楚如何去做。任何帮助将非常感激。非常感谢提前。

2 个答案:

答案 0 :(得分:0)

确实

userId = dr.Item(0)

返回ID?

答案 1 :(得分:0)

您退出第一个数据行上的For each循环,这就是为什么除非记录位于数据表的顶部,否则永远不会找到结果。

我不知道为什么你需要读取每一行来检查特定的行。但是,如果这是您的要求,请将您的代码更改为:

Dim account As String = txtAcc.Text
Dim password As String = txtPss.Text
Dim userFound as Boolean = False
Dim userId as Integer

For Each Me.dr In atadap.GetData
    If dr.Item(1) = account And dr.Item(2) = password Then
        userId = dr.Item(0) ' save the userId in a variable
        userFound = True
        Exit For
    End If
Next

If userFound then
    MsgBox("Access granted! Your User ID is " & userId)
    Me.Hide()
    frmMenu.Show()
Else
    MsgBox("Access denied!")
    txtAcc.Text = ""
    txtPss.Text = ""
End If