2016-12-29 69 views
1

我正在使用唯一密鑰寫入MySQL數據庫。理想情況下,如果具有該鍵的行已經存在,我可以更新要更新的列。看起來像這樣:VB.Net使用唯一密鑰更新MySQL

INSERT INTO read_initial(column1,column2) VALUES (%s, %s) ON DUPLICATE KEY UPDATE column1 = VALUES(column1value); 

我一直在試圖找到這個vb.net變化。目前我正在運行截斷並再次寫入所有內容,但這顯然不理想。

目前對我使用的插入:

Using SQLConnection As New MySqlConnection(myBuilder.ConnectionString) 
           Using sqlCommand As New MySqlCommand() 
            With sqlCommand 
             .CommandText = "INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value)" 
             .Connection = SQLConnection 
             .CommandType = CommandType.Text 
             .Parameters.AddWithValue("@column1", "column1value") 
             .Parameters.AddWithValue("@column2", column2value) 

我試圖改變在CommandText到

.CommandText = "INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value) ON DUPLICATE KEY (`column1`) values (@column1value)" 

但這似乎並不正確。我會很感激這方面的任何指針。我唯一的其他回退是通過套接字將所有內容發送到Python腳本,並讓它處理插入,但這似乎很迂迴,當它可能只是我在這裏有錯誤的語法。

+0

「這似乎並不是正確的」。你能解釋爲什麼不呢?你有錯誤還是記錄未更新? – Mr47

回答

1

的語法幾乎相同的你是否在控制檯或VB.NET中輸入這個SQL命令應該像

INSERT INTO read_initial (`column1`, `column2`,) values (@column1value,@column2value) 
ON DUPLICATE KEY UPDATE `column1` = values(column1) 
+0

「您的SQL語法錯誤;請查看與您的MySQL服務器版本相對應的手冊,以便在第1行的'SET'column1'= values('columndata')附近使用正確的語法。我有一個Python腳本更新相同的數據庫,所以它必須是我做錯了.net語法的東西。 – PoweredByCoffee

+0

哎呀和額外的SET爬上 – e4c5

+0

謝謝你。似乎已經做到了! – PoweredByCoffee