私のアプリは、あるプラットフォームでは MySQL を使用し、別のプラットフォームでは SQLite を使用しているため、次のようなクエリを使用する場合など、違いがありますDELETE FROM USERS
。
- MySQLでは、が返されます。
PreparedStatement.getResultSet()
null
- SQLiteでは、
PreparedStatement.getResultSet()
がスローされjava.sql.SQLException: no ResultSet available
ます。
これは、SQLite 実装のバグである場合とそうでない場合があります (返されるはずだと思いますnull
) が、どうにかしてこれに対処する必要があります。
を使用できtry { ... } catch (SQLException e) { ... }
、例外メッセージが の場合は"no ResultSet available"
、手動で null を返すだけです。ただし、これは正しい方法とは思えません。
どの JDBC ドライバーが使用されているかをチェックし、それに応じて対応する if を設定することもできますが、これも問題の良い解決策とは思えません。
私が本当に欲しいのは、実行されたステートメントからSQL コマンド (など) を取得するためのOR.hasResultSet()
を返すようなメソッドです。ただし、SQL API ではどちらも見つかりません。boolean
SELECT, UPDATE, INSERT