sql >> データベース >  >> RDS >> Mysql

executeQuery()でデータ操作ステートメントを発行することはできません

    INSERTステートメントを実行するにはexecuteUpdate()メソッドを使用する必要がありますが、SELECTステートメントを実行するにはexecuteQuery()メソッドを使用する必要があります。これは、JDBC仕様によってその使用法に課せられた要件によるものです。

    Statement.executeQuery()

    Statement.executeUpdate()

    コード(ここに投稿された擬似コード)は次のように表示されます:

    statement.executeUpdate("INSERT INTO Sessions(id_user) VALUES(1)"); // DML operation
    statement.executeQuery("SELECT LAST_INSERT_ID()"); // SELECT operation
    

    そしてもちろん、 MySQLドキュメントは、AUTO_INCREMENT列に対して同じアクティビティを実行する方法を示しています 、これは明らかにあなたが必要としているものです。

    同じトランザクションで両方を一緒に実行する必要がある場合は、次のようにセミコロンで区切って1つの文字列でステートメントを送信します。

    statement.execute("INSERT INTO Sessions(id_user) VALUES(1); SELECT LAST_INSERT_ID() FROM Sessions LIMIT 1;");
    

    次に、execute()メソッドを使用する必要があります。これは、単一のexecute()でステートメントをまとめてバッチ処理するためにデータベースとJDBCドライバーによって提供されるサポートに依存することに注意してください。これはSybaseとMSSQLServerでサポートされていますが、MySQLではサポートされていないと思います。



    1. 2列で重複する行を見つけて削除します

    2. InnoDB:ロックできません./ibdata1エラー:35

    3. nullであるmysql更新増分intフィールド

    4. MySQL now()タイムゾーンを変更