0

我在 vb.net 中做一个项目,并使用 access 2003 作为后端。我想要某种方式来获取用户 ID 为“uid”的某些特定用户的密码“pwd”。

用户 ID 是使用 ComboBox 获得的

4

1 回答 1

0

在我们开始之前,您必须知道“用户”是一个保留字。您不应该使用保留字来管理表格。它会导致各种各样的问题。但是,我们可以使用括号来处理。

有很多方法可以按照您的要求进行操作,但这是我通常的处理方式。

首先,您需要一个数据连接。我不确定您使用的是什么 CPU 平台,如果是 64 位处理器,您需要进行配置 - 并将 Active Solution Platform 更改为“x86”。

其次,您需要一个数据集来保存数据。用数据集中的数据填充组合框。

从组合框中选择“uid”后,您将需要一种仅查找该用户的方法。我建议使用数据视图。

这是一个完成任务的示例程序。我已经尝试过了,它确实有效。

Public Class Form1

Dim oleConn As New OleDb.OleDbConnection
Dim sql As String
Dim command As New OleDb.OleDbCommand
Dim oleAdapter As New OleDb.OleDbDataAdapter
Dim UserDataSet As New DataSet
Dim usid As String
Dim x As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    oleConn = New OleDb.OleDbConnection
    oleConn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=<< DATBASE PATH>>"
    sql = "Select * From [User]"
    oleConn.Open()
    command = New OleDb.OleDbCommand(sql, oleConn)
    command.ExecuteNonQuery()
    oleAdapter = New OleDb.OleDbDataAdapter("Select * From [User]", oleConn)
    UserDataSet = New DataSet
    oleAdapter.Fill(UserDataSet)
    oleConn.Dispose()
    cmbUid.DataSource = UserDataSet.Tables(0)
    cmbUid.DisplayMember = "uid"
End Sub
Private Sub cmbUid_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbUid.SelectedValueChanged
    usid = cmbUid.Text
    FindPWD()
End Sub
Private Sub FindPWD()
    'Create a dataview
    Dim dv As New DataView
    'Associate the dataview to _oDs (Dataset table)
    dv.Table = UserDataSet.Tables(0)
    Dim drv As DataRowView 'Data Row View object to query DataView object
    'Filter based on a combo box value selected
    dv.RowFilter = "[uid] LIKE '" & usid & "'"
    'Retrieve my values returned in the result
    For Each drv In dv
        'clear  textbox first time thru
        If x = 0 Then
            x = 1
            txtPwd.Clear()
        Else
            txtPwd.Text = drv("pwd")
        End If
    Next

End Sub

End Class
于 2013-03-04T00:51:03.047 回答