如何从 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... 有建议吗?

寻求代码设计建议:使用 VB.Net 和 Ms-Access

如何从 VB.net 将日期写入 Access DB

Access 数据库不会从 VB.NET 更新