如何从mysql数据库vb.net获取特定数据

时间:2015-02-24 03:35:14

标签: vb.net

我的代码搜索数据库中列表视图的所选项目的相同值,例如:" 01"代码搜索" 01"在数据库中,现在01中的数据库相当于一个名称,例如01 = Name,我的问题是; 如果代码找到01,我想获取名称而不是01。

我的代码

     Try
        Call DatabaseConnection()
        MySqlConn.Open()
        For Each item As ListViewItem In ListViewAttendance.SelectedItems
            Query = "select * from dtr_database.dtr_entries where dtr_entry_number= '" & item.SubItems(0).Text & "'"
            Command = New MySqlCommand(Query, MySqlConn)
            Reader = Command.ExecuteReader
            Dim Count As Integer
            Count = 0
            While Reader.Read
                Count = Count + 1
            End While
            If Count = 1 Then

                'if 01 is found Get Name of 01. How to do this?

                MessageBox.Show("Record Found")
            ElseIf Count > 1 Then
                MessageBox.Show("Multiple Records Found")
            Else
                MessageBox.Show("Record Found2")
            End If
        Next
        MySqlConn.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

1 个答案:

答案 0 :(得分:1)

虽然您的代码存在许多问题,但直接回答您的问题是,您应该在Reader.GetString(ColumnNumber)循环内调用While以获取Name列的值。

但是,您可以改进一些事项:

  1. 首先,除了最简单的应用程序之外,不应该通过连接字符串直接执行查询。这可能导致各种麻烦,例如其中最重要的是SQL Injection
  2. 请勿在查询中使用SELECT *。无论您是否在当前场景中需要它们,都会引入表格的所有列。此外,您不确定列的顺序。而是在查询中指定所需的列名称。
  3. 尽可能使用ADO.NET DataSet或EF。他们可以为您的查询创建易于使用的DataAdapter和包装方法,就像标准的vb.net函数一样。另外,他们使用命令参数来保护您免受SQL注入的几率。
  4. 如果您倾向于在代码中直接使用SqlCommand,请尝试使用ExecuteScalar(),如果您只需要获取单个列(在您的情况下为“名称”列)。这将使您免于必须运行Read()循环。