如何从 Access 数据库 VB.net 中检索特定数据?
Posted
技术标签:
【中文标题】如何从 Access 数据库 VB.net 中检索特定数据?【英文标题】:How to retrieve specific data from Access database VB.net? 【发布时间】:2021-12-13 23:58:59 【问题描述】:我正在尝试从具有所选客户 ID 的客户帐户数据库中检索特定值。我不确定该怎么做,这就是我目前所拥有的。
我将从组合框中选择客户 ID,那么我将如何在我的代码中使用 SQL 声明它?
Dim con As New OleDbConnection 'a new connection for the database is assigned
con.ConnectionString = "Provider =Microsoft.ACE.OLEDB.12.0; data source= C:\Users\Hamza\Documents\POS system1.accdb "
con.Open()
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
cmd = New OleDbCommand("Select Points from customers WHERE CustID= @CustID", con) 'query used to select all field
dr = cmd.ExecuteReader
txtdiscount.Text = Convert.ToInt32(dr)
con.Close()
【问题讨论】:
您缺少将 OleDbParameter 添加到 OleDbCommand。 ...另外,您当前的代码要求您dr.Read()
读者,或使用ExecuteScalar
。
要考虑的另一件事是,如果您只从数据库返回一个值,您可以考虑使用 ExecuteScaler。另请注意,dr 是一个对象,其中包含返回的每个字段的属性,然后您必须阅读
@HardCode 谢谢!你知道我该怎么做吗?
不能使用 dLookup 吗? support.microsoft.com/en-us/office/…
【参考方案1】:
不要将数据库代码与用户界面代码混在一起。
连接和命令应该调用它们的Dispose
方法,以便它们可以释放非托管资源。 Using...End Using
块将为您处理此问题(并关闭连接)。你需要为@ID
添加一个参数。
ExecuteScalar
的使用在 cmets 中得到解决。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ID = CInt(ComboBox1.SelectedItem)
Dim Points = GetPointsByID(ID)
txtdiscount.Text = Points
End Sub
Private Function GetPointsByID(ID As Integer) As String
Dim pts As String = ""
Using con As New OleDbConnection("Provider =Microsoft.ACE.OLEDB.12.0; data source= C:\Users\Hamza\Documents\POS system1.accdb "),
cmd As New OleDbCommand("Select Points from customers WHERE CustID= @CustID", con)
cmd.Parameters.Add("@CustID", OleDbType.Integer).Value = ID
con.Open()
pts = CStr(cmd.ExecuteScalar)
End Using
Return pts
End Function
【讨论】:
谢谢!它奏效了。以上是关于如何从 Access 数据库 VB.net 中检索特定数据?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录
使用 VB.NET 从 Access 中检索长二进制数据(图像)
VB6/Microsoft Access/DAO 到 VB.NET/SQL Server... 有建议吗?