ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录
Posted
技术标签:
【中文标题】ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录【英文标题】:ASP.NET - VB.NET - Retrieving record from MS-Access database 【发布时间】:2012-03-26 15:05:15 【问题描述】:我正在尝试从 MS-Access 数据库中检索记录数据并将其存储到变量中。
我正在使用这个 SQL 命令来查询数据库:
Dim cmdRead As OleDbCommand = New OleDbCommand("SELECT UserID FROM [User] where Username=?", conn)
如何在 VB.NET 中从 UserID 列(在 db 中)读取数据并将其存储到 VB.NET 中的变量中?
我基本上想要做的是检索用户 ID,以便我可以从同一个表中检索用户的姓名和姓氏。
注意:我将 ASP.NET 与 Web Develop 2003 和 MS-Access 2003 db 一起使用。
这是完整的代码:
Imports System.Data.OleDb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub btnLogin_Click(sender As Object, e As System.EventArgs) Handles btnLogin.Click
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Brian\Documents\Visual Studio 2010\WebSites\WebSite3\db.mdb;")
Dim cmd As OleDbCommand = New OleDbCommand("SELECT Username, Password FROM [User] where Username=? and Password=?", conn)
cmd.Parameters.AddWithValue("@Username", txtUsername.Text)
cmd.Parameters.AddWithValue("@Password", txtPassword.Text)
Try
conn.Open()
Dim read As OleDbDataReader = cmd.ExecuteReader()
If read.HasRows Then
While read.Read()
If txtUsername.Text = read.Item("username").ToString And txtPassword.Text = read.Item("password").ToString Then
Dim tID As Long = read.Item("UserID").ToString
Dim tName As String = read.Item("CustomerName").ToString
Dim tSurname As String = read.Item("CustomerSurname").ToString
lblLogged.Text = lblLogged.Text + tName + tSurname
lblLogged.Visible = True
End If
End While
Else
lblLogged.Text = "Login unsuccessful"
End If
read.Close()
Catch ex As Exception
Response.Write(ex.Message())
Finally
conn.Close()
End Try
End Sub
End Class
【问题讨论】:
您目前是否遇到错误? 不,不。它工作正常。我想要的是添加代码来检索用户 ID、姓名和姓氏,而不是插入。 【参考方案1】:这应该放在你的 Try 块中
conn.Open()
Dim read As OleDbDataReader = cmd.ExecuteReader()
If read.HasRows Then
While read.Read()
If txtUsername.Text = read.Item("username").ToString And txtPassword.Text = read.Item("password").ToString Then
Dim tID as long = read.Item("UserID").ToString
Else
lblLogged.Text = "Login unsuccessful"
End If
End While
End If
在 finally 块中
read.Close()
【讨论】:
读取字段的代码必须放在 .HasRows if 语句中,然后您需要一个循环来遍历记录。如果找到它,它会将 UserID 字段分配给变量 tID(在此处本地声明,但您希望它在类级别,或者只是将其分配给某处的字段)。【参考方案2】:在您的示例中出现了问题。请试试这个。
首先更改 OleDbCommand 以检索用户 ID,当您从同一个表中读取时不需要第二个命令,我认为 UserName 和 Password 标识一个唯一用户
Dim cmd As OleDbCommand = New OleDbCommand("SELECT UserID, Username, Password FROM [User] where Username=? and Password=?", conn)
然后添加你的参数并查询数据库
Try
conn.Open()
Dim read As OleDbDataReader = cmd.ExecuteReader()
If read.HasRows Then
read.Read()
' Now you can read the Item and pass the values to your textboxes
txtUsername.Text = read.Item("username").ToString
txtPassword.Text = read.Item("password").ToString
txtUserID.Text = read.Item("userid").ToString
Else
lblLogged.Text = "Login unsuccessful"
End If
read.Close()
Catch ex As Exception
Response.Write(ex.Message())
Finally
conn.Close()
End Try
【讨论】:
抱歉,误删了! 如何从困难的表中获取数据?来自用户 ID、姓名和姓氏? 嘿坦克的代码。我更新了代码以向您展示我到目前为止所做的事情。我的意思是,如果用户名是“jdoe”,VB SQL 查询将搜索匹配“jdoe”的用户 ID,并从表中检索姓名和姓氏。我更新了到目前为止所做的代码,但是当我尝试“登录”时,所有 lblLogged.Text 输入都是“UserID” 您只能读取您在 select 语句中放入的列。如果此列在同一个表“用户”上,您所要做的就是更改SELECT UserID, CustomerName, CustomerSurName ..... etc
以上是关于ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录的主要内容,如果未能解决你的问题,请参考以下文章
用C#编写的asp.net 和 vb.net编写的asp.net 有性能上的差异吗?
如何使用 dotnet cli 命令以 VB.NET 语言创建 ASP.NET Core 项目?
PDF 生成后无法打开 (vb.net) (asp.net)