我正在尝试将数据插入到MYSQL数据库中。我想在数据库中插入一个int,这样做没有问题。但是,我想插入到(值) WHERE中。当我尝试这样做时,我得到了一个MYSQL语法错误。
我可以插入和选择WHERE,只要它们在两个单独的语句中。下面是我的代码:
String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('"
+ Inventory.inventory + "') WHERE username='" + Frame.username
+ "' and password = '" + Frame.password + "'");发布于 2013-05-01 23:14:44
基本上,INSERT语句不能有WHERE子句。我在想你想要UPDATE一个特定的记录,例如
UPDATE accounts
SET inventory = 'valueHere'
WHERE userName = 'userHEre' AND password = 'passHere'只有在从INSERT语句的结果中插入记录时,SELECT语句才能有WHERE子句,例如
INSERT INTO tableName (col1, ..., colN)
SELECT col1, ..., colN
FROM table2
// WHERE ..your conditions here..顺便说一句,您当前的编码风格容易受到SQL Injection的攻击。考虑使用PreparedStatement。
PreparedStatement的基本示例
String updateString = "UPDATE accounts SET inventory = ? WHERE userName = ? AND password = ?";
PreparedStatement updateStmt = con.prepareStatement(updateString);
updateStmt.setString(1, Inventory.inventory);
updateStmt.setString(2, Frame.username);
updateStmt.setString(3, Frame.password);
updateStmt.executeUpdate();发布于 2013-05-01 23:15:34
MySQL插入语法不支持WHERE子句,这就是出现语法问题的原因。也许你正在寻找更新:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]发布于 2013-05-01 23:18:39
不是直接的答案,但更多的是一种最佳实践....
您应该避免对任何sql执行这种类型的字符串连接。你容易受到sql injection的攻击,而且它不能很好地扩展。相反,您应该考虑使用JdbcTemplates或使用开源spring framework的NamedJdbcTemplate。
https://stackoverflow.com/questions/16320848
复制相似问题