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

データベースへのプリペアドステートメントの挿入-PSQL

    PreparedStatement#execute()の戻り値を誤解しました 。

    javadocを注意深く読んでください:

    返品:

    true 最初の結果がResultSetの場合 物体; false 最初の結果が更新カウントであるか、結果がない場合。

    したがって、完全に予想されるように、falseが返されます。 INSERTで クエリ。 trueのみを返します SELECTで クエリ(ただし、通常はexecuteQuery()を使用します 代わりに、ResultSetを直接返します 。

    影響を受ける行に関心がある場合は、PreparedStatement#executeUpdate()を使用してください。 代わりは。 intを返します javadocによると:

    返品:

    (1)SQLデータ操作言語(DML)ステートメントの行数または(2)何も返さないSQLステートメントの場合は0

    1以上の戻り値は、挿入が成功したことを示します。

    無関係 具体的な問題:あなたのコードはDBリソースをリークしています。 JDBCでConnection、Statement、およびResultSetを閉じる頻度を注意深くお読みください。




    1. 接続プールの枯渇を回避するためのJDBCMySql接続プールの実践

    2. SQLFiddleは壊れていますか? Oracle、SQL Server、...のエラー

    3. PostgreSQLで一重引用符で囲まれたテキストを挿入する

    4. JDBCを使用してストアドプロシージャからOracleテーブルタイプを取得します