2013-03-03 77 views
0

我在vb.net中做一个项目,并使用Access 2003作为后端。我想要某种方式获得某些用户ID为“uid”的特定用户的密码“pwd”。在vb.net中使用sql查询检索访问数据

用户id使用组合框

+0

数据库的结构如何?你没有告诉我们任何关于它的事情。如果数据库使用散列密码,密码恢复也是不可能的。 – Dai 2013-03-03 11:08:08

+0

该数据库仅由我创建,并且密码中没有大,只是一个简单的文本。表用户具有字段即, uid,uname,性别,指定,pwd – Shri 2013-03-03 11:36:25

回答

0

获得在我们开始之前,你必须明白,“用户”是一个保留字。你不应该用一个保留字鬃毛桌子。它会导致各种问题。但是,我们可以使用括号来处理这个问题。

有很多方法可以做你想问什么,但这是我通常如何处理它。

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

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

Aftr从组合框中选择“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