2016-09-30 79 views
0

我有動如這樣的:結果MySQL查詢保存到變量在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 請advace ...

sql2被查詢到客戶表中,客戶的子句名稱是從組合框客戶加載的。 cbcust.text來自組合框加載表顧客的數據。

感謝您的任何幫助和消化。

+1

使用的參數來構建sql查詢 – romulus001

回答

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

,因爲現在,這是一個語法錯誤

+0

非常感謝很多兄弟現在在工作。 –