Perbedaan method executeQuery() dan executeUpdate()
Hai, Pada post sebelumnya kita udah belajar tentang Class API Statement dan PreparedStatement. Pembahasan kali ini kita akan lihat perbedaan antara method executeUpdate()
dan executeQuery()
. Ok yang pertama kita bahas dulu method executeUpdate()
Method executeUpdate()
Method executeUpdate()
biasanya digunakan untuk meng-eksekusi perintah insert
, update
, delete
, alter
, create
initinya query yang melakukan penambahan, perubahan pada struktur atau data.
Contoh penggunaanya seperti berikut:
@Override
public Boolean removeById(String value) throws SQLException {
//language=PostgreSQL
String query = "delete from example_table where id = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, value);
int rows = preparedStatement.executeUpdate();
preparedStatement.close();
return true;
}
Method executeUpdate()
hanya mengembalikan jumlah row/object yang terpengaruh
, kenapa saya bilang object, karena tidak cuman data tapi juga bisa berbentuk table, sequance, dan lain-lain.
Method executeQuery()
Pada method executeQuery()
biasanya digunakan untuk meng-eksekusi perintah select
, function
atau perintah sql yang mengembalikan data.
Contoh penggunaanya seperti berikut:
@Override
public Optional<ExampleTable> findById(String value) throws SQLException {
//language=PostgreSQL
String query = "select id as id,\n" +
" name as name,\n" +
" created_date as createdDate,\n" +
" created_time as createdTime,\n" +
" is_active as active,\n" +
" counter as counter,\n" +
" currency as currency,\n" +
" description as description,\n" +
" floating as floating\n" +
"from example_table\n" +
"where id = ?";
PreparedStatement preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, value);
ResultSet resultSet = preparedStatement.executeQuery();
if (!resultSet.next()) {
preparedStatement.close();
return Optional.empty();
}
ExampleTable data = new ExampleTable(
resultSet.getString("id"),
resultSet.getString("name"),
resultSet.getDate("createdDate"),
resultSet.getTimestamp("createdTime"),
resultSet.getObject("active", Boolean.class),
resultSet.getLong("counter"),
resultSet.getBigDecimal("currency"),
resultSet.getString("description"),
resultSet.getFloat("floating")
);
resultSet.close();
preparedStatement.close();
return Optional.of(data);
}
Ketika preparedStatement.executeQuery()
di eksekusi maka menghasilkan class API ResultSet. API Class ResultSet
adalah sebuah Pointer / Nodes / Array dimana data ditampung pada Class tersebut.
Untuk mengambil datanya kita bisa menggunakan loop atau selection tergantung dari jumlah baris yang di keluarkan. Jika data yang dihasilkan hanya 1 baris kita cukup menggunakan if statement
seperti contoh di atas dan jika data terdapat lebih dari 1 baris kita bisa menggunakan loop iterator
seperti pada contoh sebelumnya.
Yuk simak juga videonya,
Dan jika temen-temen belajar hal baru kali ini jangan lupa buat Like, Subcribe, dan Share ke temen kalian. Terimakasih!!!