İ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.