代码之家  ›  专栏  ›  技术社区  ›  user225269

如何在vb.net中使用数据读取器

  •  1
  • user225269  · 技术社区  · 14 年前

    请帮助,如何在vb.net中真正使用数据读取器。我正在使用odbc连接mysql和vb.net。

    Public Function form2search(ByVal drugname As String) As OdbcDataReader
    
            cmd.CommandText = "SELECT *  FROM drug WHERE Drug_name LIKE'%" & drugname & "' "
            Return cmd.ExecuteReader
    
        End Function
    

    文本更改事件:

    con.drugname=textBoxdrugname.text
         Dim rdr As Odbc.OdbcDataReader
                rdr = con.form2search(drugname)
            if rdr.hasrows=true then
            rdr.read()
    
            TextBoxdrugname.Text = rdr("Drug_name").ToString
                            TextBoxdrugcode.Text = rdr("Drug_code").ToString
                            drugtype.Text = rdr("Drug_type").ToString
    
            end if
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   Jürgen Steinblock    14 年前

    DataReader是一个低级实现,不支持导航,每次调用时只读取一行

    reader.Read()
    

    对于Windows窗体应用程序,您可能应该使用数据集/数据表方法或ORM。您应该考虑在odbc驱动程序上使用mysql连接器网络。可以在mysql.com上找到。

    dim table as new DataTable("table1")
    
    ' Create a Connection
    using conn as new MysqlConnection("...connectionstring")
        conn.Open() ' Open it
    
        ' Create a new Command Object
        using cmd as new MysqlCommand("SELECT * FROM table", conn)
    
            ' Create a DataAdapter
            ' A DataAdapter can fill a DataSet or DataTable
            ' and if you use it with a CommandBuilder it also
            ' can persist the changes back to the DB with da.Update(...)
            using da as new MysqlDataAdapter(cmd)
                da.Fill(table) ' Fill the table
            end using
    
        end using
    end using
    
    ' A Binding Source allows record navigation
    dim bs as new BindingSource(table, nothing)
    
    ' You can bind virtually every property (most common are "text" "checked" or "visible"
    ' of a windows.forms control to a DataSource
    ' like a DataTable or even plain objects
    textBox1.DataBindings.Add("Text", bs, "columnName")
    
    ' Now you can navigate your data
    bs.MoveNext()
    
    ' Even a ComboBox can be bound to a List and display the related value
    ' of your current row
    comboBox1.DataSource = table2
    comboBox1.DisplayMember = "name"
    comboBox1.ValueMember = "id"
    
    comboBox1.DataBindings.Add("SelectedValue", bs, "id")
    
        2
  •  0
  •   Rupeshit    14 年前

    您只需将数据读取器的对象放入while循环。以下是示例代码:

          dr = myCommand.ExecuteReader()
          While dr.Read()
          'reading from the datareader
           MessageBox.Show("colname1" & dr(0).ToString())
           MessageBox.Show("colname2" & dr(1).ToString())
           MessageBox.Show("colname3" & dr(2).ToString())
           MessageBox.Show("colname4" & dr(3).ToString())
           MessageBox.Show("colname5" & dr(4).ToString())
          'displaying the data from the table
           End While
           dr.Close()