2014-03-31 153 views
0

首先,我正在使用MySQL-Connector/Net和MySQL數據庫。 請不要告訴我,我應該使用或我沒有嘗試和趕上。我有,但我只想發佈少量的代碼。更新多個字段

我想在一個更新多個字段,但它不工作。我收到語法錯誤。

(從評論)我得到這個錯誤:

MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+ 1, allC = allC + 50' at line 1

sql_command.CommandText = "Update Test Set x1 + 1 And allC + ?Ammount Where = 1;"; 
sql_command.Parameters.Add("?Ammount", MySqlDbType.Int32).Value = dataTable.Tables[0].Rows.Count; 

sql_command.ExecuteNonQuery(); 

但是這是否正確? 我真的不需要where子句,因爲它只是一個數字表,我會說,所以不會超過一行。 但如果它嘗試它,也沒有工作:

sql_command.CommandText = "Update Test Set x1 + 1 And all + ?Ammount;"; 

而且,還有另一個問題,我有。 如果我想從數據庫中獲取一個條目並且它只是一個條目,哪一條是最簡單的方法?

就是這樣,但是如何將此記錄保存在少量代碼的字符串中呢?

sql_command.CommandText = "Select ID From Customer Order By ID Desc Limit 1;"; 
+0

您的查詢命令很難讀取。你應該使用'(勾號)來包圍你的列,尤其是當你有列名爲'all',因爲這是一個SQL保留字列表https://dev.mysql.com/doc/refman/5.5/en/reserved-words .html – amaster

回答

1

的UPDATE語句您的SQL語法被打破無法修復:

Update Test Set x1 + 1 And all + ?Ammount Where = 1; 

要應該參考哪些領域WHERE = 1? 哪個字段應該獲得x1 + 1的值?

我不認爲這個問題可以得到適當的回答,除非它被重大修改;請提供某種關於的描述,你想用UPDATE語句做什麼

而且,最後的SELECT語句可以修改如下:

SELECT MAX(ID) FROM Customer; 

這將是更具可讀性一點。

+0

我只是想更新我的數據庫中的字段。我認爲更新聲明必須使用,但我不確定。該表僅用於保存數量,例如已經編輯了多少客戶等等。該表只有一行,並且沒有人添加。 – Proton

+0

如果您確定*您只有一行,則根本不需要使用WHERE,只是將其忽略。你能否提供表格佈局(例如'DESCRIBE Test') – vhu

+0

我發現了這個錯誤,謝謝。但我也提出了另一個問題。我怎樣才能保存客戶的SELECT MAX(ID);在一個字符串或類似的代碼少一些?我也可以使用x1 ++或類似的東西? – Proton

2

分配你的表情一列,用逗號(,),而不是And

Update Test 
    Set x1 = x1 + 1, all = all + ?Ammount 
    Where = 1; 

此外,您WHERE條款是無效的,但我需要更多的信息來爲您解決問題。

+0

它stil不起作用。我得到這個錯誤:MySql.Data.MySqlClient.MySqlException(0x80004005):你的SQL語法有錯誤;檢查與您的MySQL服務器版本 對應的手冊,在第1行'+ 1,allC = allC + 50'附近使用正確的語法 – Proton

+0

@ user3438236擺脫'where = 1;'如果要更新全部行不需要'where'約束。雖然'哪裏1 = 1'也可以。 – paqogomez