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を閉じる頻度を注意深くお読みください。