2014-03-31 118 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