2015-04-03 102 views
1

我想要做的是在我的vb.net應用程序中進行基本插入,刷新和更新mysql查詢。刷新和插入工作完美唯一一個我不能得到的是更新任何人都可以告訴我我做錯了什麼?下面是程序設計的圖片:通過VB.NET更新MYSQL記錄

http://i.imgur.com/mHxKGrb.png

,這裏是我的源代碼:

Private Sub KnightButton3_Click(sender As Object, e As EventArgs) Handles KnightButton3.Click 
    cn = New MySqlConnection 
    cn.ConnectionString = "my info" 

    Try 
     cn.Open() 
     Dim query As String 
     Dim command As MySqlCommand 
     query = "UPDATE Refers.exploitsociety SET Refferals='" + refupdate.Text + "' WHERE Refferals='" + DataGridView1.CurrentCell.Selected + "';" 
     command = New MySqlCommand(query, cn) 
     cmd.ExecuteNonQuery() 

    Catch ex As MySqlException 
     MessageBox.Show(ex.Message) 
    Finally 
     cn.Dispose() 
    End Try 
    cn.Close() 
End Sub 
+0

因此,顯示UPDATE代碼而不是SELECT查詢 – Plutonix 2015-04-03 19:01:33

+0

更新是按鈕3 /更新代碼 – Jake 2015-04-03 19:02:14

+0

我要做的第一件事是在「query = 「行,然後查看DataGridView1.CurrentCell.Selected的值,並確保該值實際上位於要更新的​​表中。另外請注意,參數化您的查詢以防止SQL注入攻擊。 – 2015-04-03 19:06:38

回答

0

我覺得你的問題是在CurrentCell的財產Selected的使用。這是一個布爾值,它不是該單元格的內容。 我會用這樣的一個參數化查詢碼和周圍一次性對象using語句

Try 
    query = "UPDATE Refers.exploitsociety " & _ 
      "SET [email protected] " & _ 
      "WHERE [email protected]" 

    Using cn = New MySqlConnection(".... connection string ....") 
    Using command = New MySqlCommand(query, cn) 
     cn.Open() 
     command.Parameters.Add("@refs", MySqlDbType.Int32).Value = _ 
           Convert.ToInt32(refupdate.Text) 
     command.Parameters.Add("@oldrefs", MySqlDbType.Int32).Value = _ 
       Convert.ToInt32(DataGridView1.CurrentCell.Value.ToString()) 
     command.ExecuteNonQuery() 
    End Using 
    End Using 
Catch ex As MySqlException 
    MessageBox.Show(ex.Message) 
End Try 

注意用using語句,你並不需要關閉/處置連接,因爲這是自動完成的,當代碼將離開使用塊(也是例外)

+0

我可以問什麼@refs是?謝謝,你能不能添加一個沒有參數化的,因爲我沒有那麼一點。對不起./ – Jake 2015-04-03 19:21:17

+0

'@ refs'和'@ oldrefs'是參數的佔位符。使用這種方法你不需要在你的字符串周圍加引號並避免Sql注入 – Steve 2015-04-03 19:22:48

+0

附加信息:連接必須是有效的並且是開放的。當我用你的代碼替換我的代碼時,我會得到這個結果 – Jake 2015-04-03 19:25:30