1

MYSQL データベースにデータを挿入しようとしています。データベースに int を挿入したいのですが、問題はありません。ただし、INSERT INTO (VALUES) WHERE が必要です。これを試すと、MYSQL 構文エラーが発生します。

INSERT と SELECT WHERE は、2 つの別々のステートメントに含まれている限り実行できます。これが私のコードです:

    String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('"
            + Inventory.inventory + "') WHERE username='" + Frame.username
            + "' and password = '" + Frame.password + "'");
4

4 に答える 4

5

基本的に、文には句を含めるINSERTことはできません。WHERE私はあなたがUPDATE特定の記録を取りたいと考えています、例えば

UPDATE accounts
SET inventory = 'valueHere'
WHERE userName = 'userHEre' AND password = 'passHere'

ステートメントが句INSERTを持つことができるのは、ステートメントの結果からレコードを挿入するときだけです。WHERESELECT

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-01T15:14:44.397 に答える
2

MySQL INSERT 構文は WHERE 句をサポートしていないため、構文の問題があります。たぶん、あなたは UPDATE を探しています:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]
于 2013-05-01T15:15:33.500 に答える
0

INSERT INTO 構文では、WHERE は適用されません。テーブルに新しい行を挿入したいので、ユーザー名とパスワード、および VALUES セットに Inventory.inventory を追加する必要があります。

于 2013-05-01T15:21:09.937 に答える