İfadelere Giriş
Tüm SQL sorguları koşullu olarak iki gruba ayrılabilir:
- Veri alma - Bunlar, SELECT deyimini içerir .
- Verileri değiştirme - Bunlar INSERT , UPDATE ve DELETE deyimlerini içerir .
İlk grup için, bize zaten aşina olan Deyim arabirim yöntemi kullanılır -executQuery () . Prensip olarak, bu yöntem başlamak için oldukça yeterli. Gerçek bir işte kullanmanız gereken sorguların çok büyük bir yüzdesini kapsar.
Daha sonra daha fazla seçeneğe gireceğiz, ancak şimdilik, hatırlamanızı tavsiye ederim - yalnızca bir tablodan veri almak istiyorsanız, o zaman ExecuteQuery() yöntemi çoğu durumda doğru seçim olacaktır.
İkinci istek grubu için, Deyim arabiriminin başka bir yöntemini kullanmanız gerekir -executUpdate() . Bir ResultSet döndüren executeQuery() yönteminden farklı olarak , bu yöntem , sorgunuz yürütüldüğünde tablodaki kaç satırın değiştirildiğini söyleyen bir tamsayı döndürür .
Örneğin, çalışandan DELETE FROM ifadesi ile tüm satırları silebilirsiniz (bu yüzden çok dikkatli olun). Bu durumda, executUpdate() yöntemi , silinen satırların sayısını döndürür. Bazı durumlarda, değiştirilen satırların sayısını bilmek, verilerle çalışmak için algoritmalar oluşturmak için yararlı olabilir.
Prensip olarak, bu soruyu bitirebiliriz - asıl şeyi zaten gördük. Veri almak için - executeQuery() . Verileri değiştirmek için -executUpdate() .
ExecuteQuery() yöntemini kullanarak kullanıcı tablosundaki kullanıcı sayısını alın :
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
güncellemeyi yürüt()
ExecutUpdate() yöntemi, sorgunuz bir tablodaki bir şeyi değiştirdiğinde kullanılır. Herhangi bir şey olabilir:
- GÜNCELLEME bildirimi
- INSERT ifadesi
- SİL deyimi
- ÇAĞRI PROSEDÜRÜ bildirimi
Bu yöntem, değiştirilen (veya silinen) satırların sayısını döndürür.
Tüm çalışanlarımızın maaşına 1000 ruble zam yapacak bir talep yazalım.
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
Bu kodu çalıştırdıktan sonra masamda 6 sayısını döndürdü.Masamda 6 sıra vardı. Yani tüm hatlar değişti.
uygulamak()
Bazen hayatınızda tam olarak hangi talebi yerine getirmeniz gerektiğini bilmediğiniz durumlar ortaya çıkabilir - bir seçim veya bir veri değişikliği. Bu durumda, JDBC'nin yaratıcıları ona başka bir genel yöntem eklediler -execut() .
Bu yöntem, executQuery() veexecutUpdate () yöntemlerinin yerine kullanılabilir . Bu yöntemlerin nasıl farklı olduğunu hatırlıyor musunuz? Sağ. Sonuç türü. Bu nedenle, JDBC'nin yaratıcıları böyle bir çözüm buldu.
Execute() yöntemi, boole değerini döndürür. Bu değer true ise , bir veri getirme isteği devam ediyor demektir ve verileri almak için getResultSet() yöntemini çağırmanız gerekir. Örnek:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
Bu değer false ise , bir veri değiştirme isteği devam ediyor demektir ve değiştirilen satır sayısını almak için getUpdateCount() yöntemini çağırmanız gerekir. Örnek:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
Bir sorgunun sonucunu görüntüleyen bir yöntem yazalım:
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
Yürütme() yöntemi pratikte genellikle bu şekilde kullanılır.