2015-06-23 62 views
0

我在VB.NET做項目和後端是MySQL的語法錯誤插入查詢在MySQL在VB.Net

能否請你告訴我哪裏有錯誤發生

Public Sub ins() 
    con.Open() 
    Dim cmd1 As New OdbcCommand("insert into party values('" + pcode_txt.Text + "','" + Trim(UCase(name_txt.Text)) + "','" + Trim(UCase(addr_txt.Text)) + "','" + phone_txt.Text + "','" + combo_route.SelectedItem + "','" + combo_area.SelectedItem + "'", con) 
    cmd1.ExecuteNonQuery() 
    con.Close() 
End Sub 

錯誤我得到的是:

ERROR [42000] [MySQL的] [ODBC驅動程序3.51]的[mysqld-5.6.24]您的SQL語法錯誤 ;檢查對應於您 MySQL服務器版本在線路附近使用「」正確的語法手冊1

+0

你得到的錯誤究竟是什麼? – sblandin

+0

我得到的錯誤在上面給出 –

+0

其中之一,插入應該是大寫和值。同樣取決於您使用的是哪個版本的mysql,調用這樣的查詢會折舊。這我不知道,但'OdbcCommand'看起來不像Mysql。 –

回答

1
,錯過值列表右括號

Dim cmd1 As New OdbcCommand("insert into party values('" + pcode_txt.Text + "','" + Trim(UCase(name_txt.Text)) + "','" + Trim(UCase(addr_txt.Text)) + "','" + phone_txt.Text + "','" + combo_route.SelectedItem + "','" + combo_area.SelectedItem + "')", con) 

我的答案是完全適合你的問題,但正如評論中所建議的那樣,字符串連並不是構建查詢的可靠方法。

更安全的解決方案是基於參數。如果可能的話,避免在應用程序中創建sql代碼,並依賴於服務器語句(存儲過程和/或視圖)。

+0

謝謝你這是工作ji –

+2

雖然這個工程,它是開放的SQL注入。考慮到這一點,這是一個不好的例子。 – OneFineDay

+0

@OneFineDay 100%同意。正確的實現是一個帶參數或存儲過程的命令 – Paolo