Junior
execute, executeQuery ve executeUpdate metodları arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
execute, executeQuery ve executeUpdate metodları, JDBC aracılığıyla SQL sorgularını yürütmek için kullanılır, ancak farklı sorgu türleri için tasarlanmışlardır ve farklı sonuçlar döndürürler.
-
executeQuery(String sql):SELECTtüründeki SQL sorgularını yürütmek için tasarlanmıştır.- Sorgu sonuçlarını içeren bir
ResultSetnesnesi döner. - Sorgu
SELECTdeğilseSQLExceptionfırlatır.
// executeQuery kullanım örneği String sql = "SELECT COUNT(*) FROM users"; try (ResultSet rs = statement.executeQuery(sql)) { if (rs.next()) { int userCount = rs.getInt(1); System.out.println("Kullanıcı sayısı: " + userCount); } } catch (SQLException e) { e.printStackTrace(); } -
executeUpdate(String sql):INSERT,UPDATEveyaDELETEtüründeki SQL sorgularını yürütmek için tasarlanmıştır.- Ayrıca DDL komutları (
CREATE TABLE,ALTER TABLE) için de kullanılabilir. - Etkilenen satır sayısını temsil eden bir
intdöner (INSERT,UPDATE,DELETEiçin) veya 0 (DDL komutları için). - Sorgu
ResultSetdöndürüyorsaSQLExceptionfırlatır.
// executeUpdate kullanım örneği String sql = "UPDATE products SET price = price * 1.1 WHERE category = 'electronics'"; try { int updatedRows = statement.executeUpdate(sql); System.out.println("Güncellenen satır sayısı: " + updatedRows); } catch (SQLException e) { e.printStackTrace(); } -
execute(String sql):- Her türlü SQL sorgusunu yürütmek için evrensel bir yöntem.
booleandöner:trueise sonuçResultSet'dir (örneğinSELECTiçin),falseise sonuç etkilenen satır sayısı veya hiçbir şey döndürmeyen sorgudur (INSERT,UPDATE,DELETE, DDL).executesonrası gerçek sonucu almak için:executetruedönerse,getResultSet()kullanılarakResultSetalınır.executefalsedönerse,getUpdateCount()kullanılarak etkilenen satır sayısı alınır.
// execute kullanımı örneği String sql = "CREATE TABLE IF NOT EXISTS logs (id INT PRIMARY KEY, message VARCHAR(255))"; try { boolean isResultSet = statement.execute(sql); if (isResultSet) { // Bu bir SELECT sorgusudur try (ResultSet rs = statement.getResultSet()) { // Sonuçlar işlenir } } else { // Bu bir INSERT, UPDATE, DELETE veya DDL sorgusudur int updateCount = statement.getUpdateCount(); System.out.println("Etkilenen satırlar veya DDL sonucu: " + updateCount); } } catch (SQLException e) { e.printStackTrace(); }
Aşağıdaki tabloda temel farklar gösterilmektedir:
| Yöntem | SQL sorgu türü | Dönen değer | Sorgu örnekleri |
|---|---|---|---|
executeQuery |
SELECT |
ResultSet |
SELECT * FROM users |
executeUpdate |
INSERT, UPDATE, DELETE, DDL |
int (etkilenen satır sayısı veya 0) |
INSERT INTO, UPDATE users, DROP TABLE |
execute |
Herhangi bir tür | boolean (true ResultSet ise; false değilse) |
Herhangi |
Genellikle, sorgu türü önceden biliniyorsa (executeQuery, executeUpdate) daha özelleştirilmiş metodların kullanılması önerilir, çünkü bu kodun açıklığını artırır ve derleyici veya IDE tarafından daha doğru kontroller yapılmasını sağlar. execute metodu, sorgu türü dinamik veya önceden bilinmiyorsa kullanılır.