Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET MySQL查询不返回任何值_Mysql_Sql_Vb.net - Fatal编程技术网

VB.NET MySQL查询不返回任何值

VB.NET MySQL查询不返回任何值,mysql,sql,vb.net,Mysql,Sql,Vb.net,我试图在vb.net中使用MySQL在combobox中显示值。现在我面临的问题是combobox没有显示来自MySQL的值。我有以下代码: MySqlConn = New MySqlConnection MySqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=s974_db" Try MySqlConn.Open() Label21.Te

我试图在vb.net中使用MySQL在combobox中显示值。现在我面临的问题是combobox没有显示来自MySQL的值。我有以下代码:

MySqlConn = New MySqlConnection
    MySqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=s974_db"

    Try
        MySqlConn.Open()
        Label21.Text = "DB Connection Successful"

        Dim Query As String
        Query = "select * from s974_db.processors where Name='" & ComboBox1.Text & "'"

        COMMAND = New MySqlCommand(Query, MySqlConn)
        READER = COMMAND.ExecuteReader
        While READER.Read
            Label10.Text = READER.GetDouble("Price")

        End While


        MySqlConn.Close()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MySqlConn.Dispose()


    End Try
但是,使用上面的代码Combobox1.Text不会返回任何内容,但如果使用下面的代码,该代码具有不同的查询功能:

        MySqlConn = New MySqlConnection
    MySqlConn.ConnectionString = "server=localhost;userid=root;password=root;database=s974_db"

    Try
        MySqlConn.Open()
        Label21.Text = "DB Connection Successful"

        Dim Query As String
        Query = "select * from s974_db.processors"

        COMMAND = New MySqlCommand(Query, MySqlConn)
        READER = COMMAND.ExecuteReader
        While READER.Read
            Dim sName = READER.GetString("Name")
            ComboBox1.Items.Add(sName)
        End While


        MySqlConn.Close()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MySqlConn.Dispose()


    End Try

有人能检查一下,让我知道可能是什么问题吗?谢谢

我在评论中提到的亮点

Private Sub Form1\u Load(发送方作为对象,e作为事件参数)处理MyBase.Load
'您只需打开一次连接
MySqlConn=新的MySqlConnection
MySqlConn.ConnectionString=“server=localhost;userid=root;password=root;database=s974\u db”
尝试
MySqlConn.Open()
Label21.Text=“数据库连接成功”
'首先加载两个组合框
将查询设置为字符串
query=“从s974_db.处理器中选择*
COMMAND=newmysqlcommand(查询,MySqlConn)
READER=COMMAND.ExecuteReader
边读边读
Dim sname=READER.GetString(“名称”)
ComboBox1.Items.Add(sname)
ComboBox2.Items.Add(sname)
结束时
Catch ex作为MySqlException
MessageBox.Show(例如Message)
最后
结束尝试
端接头
私有子表单1\u关闭(ByVal sender作为对象,ByVal e作为EventArgs)处理MyBase.Closing
尝试
MySqlConn.Close()
MySqlConn.Dispose()
特例
结束尝试
端接头
现在是组合框

Private子Combox1\u SelectedIndexChanged(ByVal发送方作为对象,ByVal e作为事件参数)处理Combox1.SelectedIndexChanged
'仅当选择了一个项目时,才要求提供数据
如果ComboBox1.SelectedIndex>-1,则
尝试
将查询设置为字符串
Query=“从s974_db.processors中选择*,其中Name=”&ComboBox1.Text&“
COMMAND=newmysqlcommand(查询,MySqlConn)
READER=COMMAND.ExecuteReader
边读边读
Label11.Text=READER.GetDouble(“价格”)
结束时
Catch ex作为MySqlException
MessageBox.Show(例如Message)
最后
结束尝试
如果结束
端接头
私有子Combox2\u SelectedIndexChanged(发送方作为对象,e作为事件参数)处理Combox2.SelectedIndexChanged
如果ComboBox2.SelectedIndex>-1,则
尝试
将查询设置为字符串
Query=“从s974_db.processors中选择*,其中Name=”&ComboBox1.Text&“
COMMAND=newmysqlcommand(查询,MySqlConn)
READER=COMMAND.ExecuteReader
边读边读
Label10.Text=READER.GetDouble(“价格”)
结束时
Catch ex作为MySqlException
MessageBox.Show(例如Message)
最后
结束尝试
如果结束
端接头
这正是我在Form_load上所描述的,您可以填写这两个组合框

现在更改其中一个组合框时,其中一个标签也会更改

有时必须更新元素才能看到更改

在这种情况下,在循环的末尾写入

Label10.Update()
从顶端开始。。。 将数据库对象保持在使用它们的方法的本地。(不是表单级变量)可以将连接字符串设置为类级字符串变量。这是确保它们已关闭和处置的唯一方法

使用…结束使用
块将关闭并处理数据库对象,即使出现错误。连接的构造函数接受连接字符串。联系是珍贵的东西。在使用
之前不要打开连接。请执行
方法并尽快将其关闭

用户可以在
Form.Load
之前从
ComboBox1
中选择项目,这没有多大意义

一般来说,我们不想下载超出需要的数据,我们希望尽可能少地访问数据库。在
Form.Load
中,我们将组合框绑定到包含名称和价格字段的数据表,设置显示和值成员。现在,只要用户在组合中选择一个名称,我们就可以检索价格,而无需再次连接到数据库

我注意到您在另一个事件中使用了
Val
。这是一个旧的VB6方法,可能会给您带来意外的结果。Net和vb.Net有各种各样的方法可以更快、更可靠地从字符串中提取数字
CInt
.TryParse
.Parse
CType
转换为

公共类表单1
私有解析为String=“server=localhost;userid=root;password=root;database=s974_db”
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
'填充组合框
Dim dt作为新数据表
使用cn作为新的MySqlConnection(ConString),
cmd作为新的MySqlCommand(“从处理器中选择名称、价格;”,cn)
cn.Open()
dt.Load(命令执行器读取程序)
使用“结束”关闭并处理连接和命令
ComboBox1.DataSource=dt
ComboBox1.DisplayMember=“名称”
ComboBox1.ValueMember=“价格”
端接头
私有子Combox1\u SelectionChangeCommitted(发送方作为对象,e作为事件参数)处理Combox1.SelectionChangeCommitted
Label10.Text=ComboBox1.SelectedValue.ToString
ClearLabels()
端接头
私有子ClearLabels()
Label11.Text=“”
Label12.Text=“”
Label13.Text=“”
Label14.Text=“”
Label15.Text=“”
Label16.Text=“”
Label17.Text=“”
Label18.Text=“”
Label19.Text=“”
Label20.Text=“”
端接头
末级

请学习如何在vb net中使用准备好的语句,因为当您的第一个代码不工作时,每个代码都可能受到sql injetion的攻击,mysql会告诉您没有符合该条件的数据。如果在mysql workbench中查询不起作用,则测试您的查询,查看它们是否给出任何结果。同时检查comboboxFirst代码示例的文本似乎只设置了label text属性。第二个代码示例设置组合框项目。
Query=“从s974_db.processors中选择*,其中Name=”&ComboBox1.Text&“<