Java和MYSQL语法问题
我正在尝试将数据插入MYSQL数据库。我想在数据库中插入一个int,这样做没有问题。但是,我想在其中插入(值)。当我尝试此操作时,会出现MYSQL语法错误 我可以插入和选择位置,只要它们在两个独立的语句中。这是我的密码:Java和MYSQL语法问题,java,mysql,syntax,Java,Mysql,Syntax,我正在尝试将数据插入MYSQL数据库。我想在数据库中插入一个int,这样做没有问题。但是,我想在其中插入(值)。当我尝试此操作时,会出现MYSQL语法错误 我可以插入和选择位置,只要它们在两个独立的语句中。这是我的密码: String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('" + Inventory.inventory + "') WHERE username='" + Frame.u
String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('"
+ Inventory.inventory + "') WHERE username='" + Frame.username
+ "' and password = '" + Frame.password + "'");
基本上,
INSERT
语句不能有WHERE
子句。我想你想更新某个记录,例如
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注入
中易受攻击。考虑使用<代码> PraseReald><代码> > < /P>
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();
基本上,INSERT
语句不能有WHERE
子句。我想你想更新某个记录,例如
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注入
中易受攻击。考虑使用<代码> PraseReald><代码> > < /P>
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();
MySQL INSERT语法不支持WHERE子句,因此存在语法问题。也许您正在寻找更新:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
MySQL INSERT语法不支持WHERE子句,因此存在语法问题。也许您正在寻找更新:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
不是一个直接的答案,而是一个最佳实践……
您应该避免对任何sql执行这种类型的字符串连接。您很容易受到攻击,并且它不能很好地扩展。相反,您应该考虑使用JdbcTemplates或使用开源的NamedJdbcTemplate 这不是一个直接的答案,而是一个最佳实践……
您应该避免对任何sql执行这种类型的字符串连接。您很容易受到攻击,并且它不能很好地扩展。相反,您应该考虑使用JdbcTemplates或使用开源的NamedJdbcTemplate WHERE在INSERT INTO语法中不适用。要在表中插入新行,应在值集中添加用户名和密码以及Inventory.Inventory。WHERE在insert INTO语法中不适用。要在表中插入新行,应在值集中添加用户名和密码以及Inventory.Inventory