Java和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

我正在尝试将数据插入MYSQL数据库。我想在数据库中插入一个int,这样做没有问题。但是,我想在其中插入(值)。当我尝试此操作时,会出现MYSQL语法错误

我可以插入和选择位置,只要它们在两个独立的语句中。这是我的密码:

    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