Java和MYSQL语法问题

Nic*_*Nic 1 java mysql syntax

我正在尝试将数据插入到我的MYSQL数据库中.我想在数据库中插入一个我没有问题的int.但是,我想INSERT INTO(VALUES)WHERE.我尝试这个时遇到MYSQL语法错误.

只要它们在两个单独的语句中,我就可以INSERT和SELECT WHERE.这是我的代码:

    String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('"
            + Inventory.inventory + "') WHERE username='" + Frame.username
            + "' and password = '" + Frame.password + "'");
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 5

基本上,INSERT声明不能有WHERE条款.我想你想要UPDATE某个记录,例如

UPDATE accounts
SET inventory = 'valueHere'
WHERE userName = 'userHEre' AND password = 'passHere'
Run Code Online (Sandbox Code Playgroud)

INSERT语句可以拥有WHERE子句的唯一时间是从SELECT语句结果中插入记录,例如

INSERT INTO tableName (col1, ..., colN)
SELECT col1, ..., colN
FROM table2
// WHERE ..your conditions here..
Run Code Online (Sandbox Code Playgroud)

作为旁注,您目前的编码风格很容易受到影响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();
Run Code Online (Sandbox Code Playgroud)