So'rovlarni bajarish

All lectures for UZ purposes
Daraja, Dars
Mavjud

Statement bilan tanishuv

Barcha SQL-so'rovlarni shartli ravishda ikki guruhga bo'lish mumkin:

  • Ma'lumotlarni olish — unga SELECT operatori kiradi.
  • Ma'lumotlarni o'zgartirish — unga INSERT, UPDATE va DELETE operatorlari kiradi.

Birinchi guruh uchun bizga tanish bo'lgan Statement interfeys metodidan foydalaniladi — executeQuery(). Asosan bu metod bilan boshlash kifoya. Bu real ishda ishlatishingiz kerak bo'lgan juda ko'p miqdordagi so'rovlarni qamrab oladi.

Keyinroq qo'shimcha imkoniyatlar bilan tanishamiz, lekin hozir eslab qolishni tavsiya qilaman — agar sen faqatgina jadvaldan ma'lumotlarni olishni xohlasang, unda executeQuery() metodi ko'pincha eng to'g'ri tanlov bo'ladi.

Ikkinchi guruh so'rovlari uchun Statement interfeysining boshqa metodidan foydalanish kerak — executeUpdate(). executeQuery() metodidan farqli o'laroq, u ResultSet qaytaradi, bu metod esa so'rovingizni bajarish jarayonida jadvalda qancha qator o'zgartirilganligini aytadigan butun sonni qaytaradi.

Masalan, sen DELETE FROM employee operatori yordamida barcha qatorlarni o'chirib tashlashing mumkin (shuning uchun juda ehtiyot bo'ling). Bu holda executeUpdate() metodi o'chirilgan qatorlar sonini qaytaradi. Ba'zi vaziyatlarda o'zgartirilgan qatorlar sonini bilish, ma'lumotlar bilan ishlash algoritmlarini yaratishda qulay bo'lishi mumkin.

Bu masala bilan asosan tugallash mumkin — asosiy narsalarni ko'rdik. Ma'lumotlar tanlash uchun — executeQuery(). Ma'lumotlarni o'zgartirish uchun — executeUpdate().

Metod executeQuery() yordamida user jadvalidagi foydalanuvchilar sonini olish:


    // Foydalanuvchilar sonini olish
	ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
	results.next();
    int count = results.getInt(1);

executeUpdate()

executeUpdate() metodi sening so'roving jadvalda nimanidir o'zgartirganda ishlatiladi. Bu har qanday narsa bo'lishi mumkin:

  • UPDATE operatori
  • INSERT operatori
  • DELETE operatori
  • CALL PROCEDURE operatori

Bu metod o'zgartirilgan (yoki o'chirilgan) qatorlar sonini qaytaradi.

Keling, barcha xodimlarimizning ish haqini 1000 so'mga oshiradigan so'rov yozaylik:


   // Ish haqlarini oshirish
   int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");

Ushbu kodni bajarganimdan so'ng, mening jadvalimda 6 qator bor edi, va u 6 sonini qaytardi. Demak barcha qatorlar o'zgartirilgan.

execute ()

Ba'zan hayotingda sen aniq bilmagan so'rovlarni bajarish kerak bo'lgan vaziyatlar bo'lishi mumkin — ma'lumotlarni tanlash yoki o'zgartirish. Bunday holatlarda JDBC yaratuvchilari universal metod qo'shdilar — execute().

Bu metod executeQuery() va executeUpdate() metodlari o'rniga ishlatilishi mumkin. Bu metodlar qanday farqlanganini eslaysanmi? To'g'ri. Natija turi bo'yicha. Shuning uchun JDBC yaratuvchilari bunday yechimni o'ylab topishdi.

execute() metodi boolean qiymatini qaytaradi. Agar bu qiymat true bo'lsa, demak ma'lumotlarni olish uchun so'rov bajarilgan va sen getResultSet() metodini chaqirishing kerak, ma'lumotlarni olish uchun. Misol:


    boolean hasResults = statement.execute("SELECT Count(*) FROM user");
    if ( hasResults ) {
        // Ma'lumotlarni olish
        ResultSet results =  statement.getResultSet();
        results.next();
        int count = results.getInt(1);
 	}

Agar bu qiymat false bo'lsa, demak ma'lumotlarni o'zgartirish uchun so'rov bajarilgan va sen getUpdateCount() metodini chaqirishing kerak, o'zgartirilgan qatorlar sonini olish uchun. Misol:


    boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
    if ( !hasResults ) {
        // O'zgartirilgan qatorlar soni
        int count = statement.getUpdateCount();
 	}

Keling, ekranda so'rov natijasini chiqaradigan metod yozaylik:


	public void executeAndPrintSQLQuery(String sqlQuery) {
        boolean hasResults = statement.execute(sqlQuery);
        if ( hasResults ) {
            // Ma'lumotlarni chiqarish
 	        ResultSet results =  statement.getResultSet();
           	System.out.println("So'rovingizning qatorlari quyida: ");
           	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();
            // O'zgartirilgan qatorlar soni
        	System.out.println("O'zgartirilgan qatorlar soni: " + count);
  	}
}

Mana shunday execute() metodi odatda amaliyotda qo'llaniladi.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION