mysql - vb.net中数据读取器的使用方法

标签 mysql database vb.net

请帮助,我如何在 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

text_changed 事件:

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

我看到一个结果,但它只加载数据库中的第一项。我已将此代码放入 text_changed 事件中。这样做的正确方法是什么?第二个代码有什么问题,为什么它只加载第一个数据

如您所见,con 是我声明函数的模块。然后我在表单中创建了它的一个对象。

最佳答案

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")

关于mysql - vb.net中数据读取器的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324425/

相关文章:

MySQL 按总和分组

mysql - 在 WHERE 语句中添加和比较列

android - 设备崩溃

.net - 在 .NET 中的当前命令窗口中启动进程

c# - 如何在 .net 3.5 中禁用 ListView 控件中的项目

c# - 什么是NullReferenceException,如何解决?

php - drupal view2用于JOIN的views_query_alter

MySQL 安装程序没有取得任何进展

java - 用于插入表的 DB2 数据库特殊字符

php - 错误号 : 1054 in php code igniter