将结果mysql查询保存到VB net中的变量

时间:2016-09-30 03:52:23

标签: mysql vb.net

我有像这样的vb:

Sub inputdata()
Try
koneksi.Open()
***sql2 = "SELECT code_cust from customer where ('nama_cust= " & Me.cbcust.Text & "')"
cmd = New MySqlCommand(sql2, koneksi)
 sql3.text=cmd.ExecuteNonQuery()***

sql = "insert into hsmaster(nohs,detailhs,beamasuk,satuanhs,idcust,asal) values ('" & Me.txtnohs.Text & "',"
            sql += "'" & Me.rtdetail.Text & " ',"
            sql += "'" & Me.txtbm.Text & " ',"
            sql += "'" & Me.txtsatuan.Text & " ',"
            sql += "'" & sql3 & " ',"
            sql += "'" & Me.Cbcountry.Text & " ')"
            cmd = New MySqlCommand(sql, koneksi)
            cmd.ExecuteNonQuery()
            MessageBox.Show("Insert data berhasil dilakukan")
        Catch ex As Exception
            MessageBox.Show("Insert data Gagal dilakukan")

        Finally
            koneksi.Close()
        End Try

所以我想将quert sql3的结果保存到slq3,但结果是-1 请推荐...

sql2是对客户表的查询,客户的子句名称是从组合框客户加载的。 cbcust.text来自组合框,从表客户加载数据。

感谢任何帮助和消化。

1 个答案:

答案 0 :(得分:0)

ExecuteNonQuery仅用于插入/更新/删除,您不希望从中检索数据的查询。您看到的-1是执行非查询时返回的数据库,以指示命令是否成功。在第二次插入时使用ExecuteNonQuery是正确的,但是对于第一个选择查询,如果要返回一个值,则必须使用

sql3.text = cmd.ExecuteScalar

或使用datareader

Dim dr As MySqlDataReader
dr = cmd.ExecuteReader
'check to make sure dr isnot nothing and read it, then
Dim returnValue as string = dr(code_cust)

ExecuteScalar用于返回单个值,在您的情况下可能效果最佳,在期望多列和/或行时使用datareader

您也应该在查询中使用参数,但如果使用像你这样的引号:

***sql2 = "SELECT code_cust from customer where ('nama_cust= " & Me.cbcust.Text & "')"

需要像这样移动的单引号:

***sql2 = "SELECT code_cust from customer where (nama_cust= '" & Me.cbcust.Text & "')"

因为现在,这是一个语法错误