Melaksanakan pertanyaan

All lectures for MS purposes
Tahap , pelajaran
Tersedia

Pengenalan kepada Penyata

Semua pertanyaan SQL boleh dibahagikan secara bersyarat kepada dua kumpulan:

  • Mendapatkan semula data − Ini termasuk pernyataan SELECT .
  • Mengubah suai data − Ini termasuk penyataan INSERT , UPDATE , dan DELETE .

Untuk kumpulan pertama, kaedah antara muka Penyata yang sudah biasa kepada kami digunakan - executeQuery() . Pada dasarnya, kaedah ini cukup untuk bermula. Ia merangkumi peratusan pertanyaan yang sangat besar yang anda perlu gunakan dalam kerja sebenar.

Kami akan membincangkan lebih banyak pilihan kemudian, tetapi buat masa ini, saya menasihati anda untuk ingat - jika anda hanya mahu mendapatkan data daripada jadual, maka kaedah executeQuery ( ) dalam kebanyakan kes akan menjadi pilihan yang tepat.

Untuk kumpulan permintaan kedua, anda perlu menggunakan kaedah lain bagi antara muka Penyata - executeUpdate() . Tidak seperti kaedah executeQuery() , yang mengembalikan ResultSet, kaedah ini mengembalikan integer yang memberitahu anda berapa banyak baris dalam jadual telah ditukar apabila pertanyaan anda dilaksanakan .

Sebagai contoh, anda boleh memadamkan semua baris dengan penyata DELETE FROM pekerja (jadi berhati-hati). Dalam kes ini, kaedah executeUpdate() akan mengembalikan bilangan baris yang dipadamkan. Dalam sesetengah situasi, mengetahui bilangan baris yang diubah boleh berguna untuk membina algoritma untuk bekerja dengan data.

Pada dasarnya, kita boleh menyelesaikan soalan ini - kita telah melihat perkara utama. Untuk pengambilan data - executeQuery() . Untuk menukar data - executeUpdate() .

Dapatkan bilangan pengguna dalam jadual pengguna menggunakan kaedah executeQuery() :


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

executeUpdate()

Kaedah executeUpdate() digunakan apabila pertanyaan anda mengubah sesuatu dalam jadual. Ia boleh jadi apa sahaja:

  • KEMASKINI kenyataan
  • INSERT kenyataan
  • PADAM kenyataan
  • kenyataan PROSEDUR PANGGILAN

Kaedah ini mengembalikan bilangan baris yang diubah (atau dipadamkan).

Mari tulis permintaan yang akan meningkatkan gaji semua pekerja kami sebanyak 1000 rubel.


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

Selepas saya menjalankan kod ini, ia mengembalikan nombor 6 di atas meja saya. Meja saya mempunyai 6 baris. Jadi semua baris telah ditukar.

laksanakan()

Kadangkala situasi mungkin timbul dalam hidup anda apabila anda tidak tahu dengan tepat permintaan yang perlu anda laksanakan - pemilihan atau perubahan data. Dalam kes ini, pencipta JDBC menambahkan kaedah generik lain padanya - execute() .

Kaedah ini boleh digunakan sebagai ganti kaedah executeQuery() dan executeUpdate() . Adakah anda ingat bagaimana kaedah ini berbeza? Betul. Jenis hasil. Oleh itu, pencipta JDBC datang dengan penyelesaian sedemikian.

Kaedah execute() mengembalikan boolean. Jika nilai ini benar , maka permintaan pengambilan data sedang dijalankan dan anda perlu memanggil kaedah getResultSet() untuk mendapatkan data. Contoh:


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

Jika nilai ini palsu , maka permintaan perubahan data sedang dijalankan dan anda perlu memanggil kaedah getUpdateCount() untuk mendapatkan bilangan baris yang ditukar. Contoh:


    boolean hasResults = statement.execute("UPDATE  employee SET salary = salary+1000");
    if ( !hasResults ) {
      	int count = statement.getUpdateCount();
 	}

Mari tulis kaedah yang memaparkan hasil pertanyaan:


	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);
  	}
}

Inilah cara kaedah execute() biasanya digunakan dalam amalan.

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