用户登录后的Ms-Access显示列值

时间:2014-04-13 18:55:24

标签: vb.net visual-studio-2010 ms-access

我有一个Microsoft Access数据库(.mdb)。有一个名为" tblLogin"的表。该表如下所示:

ID | Username | Password | Access Level
1 | admin | admin | 3
2 | staff | staff | 2
3 | user | user | 1

我实现了某种登录功能,代码如下:

Imports System.Data.OleDb

.....

username = txtUsername.text
password = txtPassword.text
Dim connection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=server.mdb;")
Dim command As New OleDbCommand("SELECT [ID] FROM [tblLogin] WHERE [UsernameField] = username AND [PasswordField] = password", connection)
Dim usernameParam As New OleDbParameter("username", username)
Dim passwordParam As New OleDbParameter("password", password)
command.Parameters.Add(usernameParam)
command.Parameters.Add(passwordParam)

If reader.HasRows Then
     MessageBox.Show("you have authenticated successfully")
     '' update
     Dim level = reader("Access Level").ToString()
     MsgBox(level)
     '' The textbox returns the word "Access Level", not the value of 0,1,2 etc. 
     command.Connection.Close()
     command.Connection.Dispose()
End If

如果提供的用户名和密码与数据库中的用户名和密码匹配,则认为该用户已登录。问题是,我想获得"访问级别"当用户登录时,我对此非常感兴趣。

如何获取登录用户的访问级别值?我需要使用reader.GetValue等吗?

谢谢!

更新

Dim command As New OleDbCommand("SELECT [ID] FROM [tblLogin] WHERE [UsernameField] = username AND [PasswordField] = password", connection)

更改为

Dim command As New OleDbCommand("SELECT * FROM [tblLogin] WHERE [UsernameField] = username AND [PasswordField] = password", connection)

罪魁祸首实际上是db命令 - , - 我现在必须睡不够。

1 个答案:

答案 0 :(得分:1)

您只需在选择字段列表中添加该字段即可 顺便说一句,OleDb的参数占位符通常是一个问号。 OleDb无法通过名称识别参数,只能通过占位符在命令文本

中的位置来识别
using connection = New OleDbConnection("............")
using command = New OleDbCommand("SELECT [ID], [Access Level] " & _ 
                                  "FROM [tblLogin] WHERE [Username] = ? AND " & _ 
                                  "[Password] = ?", connection)

    Dim usernameParam As New OleDbParameter("@p1", username)
    Dim passwordParam As New OleDbParameter("@p2", password)
    command.Parameters.Add(usernameParam)
    command.Parameters.Add(passwordParam)
    using (OleDbDataReader reader = command.ExecuteReader())

       if reader.Read() Then
          MessageBox.Show("you have authenticated successfully")

          ' Now you need to read that field and store in a variable or
          ' in some kind of user interface object....
          Dim level = reader("Access Level").ToString()

       End If
    End Using
End Using
End Using
相关问题