2013-03-03 60 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