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