请帮助检索数据以将其标记在标签上

时间:2014-03-01 13:31:41

标签: vb.net oledb

我想从表Products中检索价格,以便在label2表单上将其用作orderinfo

    Dim con As New OleDb.OleDbConnection
    Dim com As New OleDb.OleDbCommand
    com = New OleDb.OleDbCommand("Select Price FROM Products WHERE ProductName='" & ListBox1.SelectedItem.ToString & "'", con)
    con.ConnectionString = "PROVIDER = Microsoft.ACE.OLEDB.12.0; Data Source=Database_AntoninosCafe.accdb"
    con.Open()
    com.ExecuteNonQuery()
    orderInfo.Label2.Text = retrieve data
    con.Close()

1 个答案:

答案 0 :(得分:0)

解决简单问题的正确方法

Dim cmdText = "Select Price FROM Products WHERE ProductName=?"
Using con = New OleDb.OleDbConnection( ... connection string here ...)
Using com = New OleDb.OleDbCommand(cmdText, con)
   com.Parameters.AddWithValue("@p1", ListBox1.SelectedItem.ToString)
   con.Open()
   Using reader = com.ExecuteReader()
       if reader.Read() Then
          orderInfo.Label2.Text = reader("Price").ToString
       End If
   End Using  
End Using
End Using

第一件事是使用参数化查询来避免sql注入和解析问题,然后使用Using语句将一次性对象封装在一个代码块中,以确保关闭和处理这些对象。 最后,要从数据表中读取数据,请使用返回OleDbDataReader实例的ExecuteReader命令。这个实例可用于从数据库中提取数据

作为旁注,我使用了问号作为参数的占位符。这是OleDb使用的预定义符号。但是,在将参数值添加到集合时,我使用了不同的名称(@ p1)。这是可以接受的,因为OleDb不使用参数名称来查找查询文本中的相应占位符,如SqlClient或其他提供程序,而是使用占位符的位置。因此,第一个占位符替换为第一个参数,依此类推。