Introducere în declarații

Toate interogările SQL pot fi împărțite condiționat în două grupuri:

  • Preluarea datelor - Acestea includ instrucțiunea SELECT .
  • Modificarea datelor - Acestea includ instrucțiunile INSERT , UPDATE și DELETE .

Pentru primul grup, se folosește metoda de interfață Statement deja familiară - executeQuery() . În principiu, această metodă este suficientă pentru a începe. Acoperă un procent foarte mare de interogări pe care va trebui să le utilizați într-un loc de muncă real.

Vom intra în mai multe opțiuni mai târziu, dar deocamdată, vă sfătuiesc să vă amintiți - dacă doriți doar să obțineți date dintr-un tabel, atunci metoda executeQuery () în marea majoritate a cazurilor va fi alegerea potrivită.

Pentru al doilea grup de cereri, trebuie să utilizați o altă metodă a interfeței Statement - executeUpdate() . Spre deosebire de metoda executeQuery() , care returnează un ResultSet, această metodă returnează un număr întreg care vă spune câte rânduri din tabel au fost modificate când a fost executată interogarea .

De exemplu, puteți șterge toate rândurile cu instrucțiunea DELETE FROM angajat (deci fiți foarte atenți). În acest caz, metoda executeUpdate() va returna numărul de rânduri șterse. În unele situații, cunoașterea numărului de rânduri modificate poate fi utilă pentru construirea de algoritmi pentru lucrul cu date.

În principiu, putem finaliza această întrebare - am văzut deja principalul lucru. Pentru preluarea datelor - executeQuery() . Pentru a modifica datele - executeUpdate() .

Obțineți numărul de utilizatori din tabelul de utilizatori folosind metoda executeQuery() :


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

executeUpdate()

Metoda executeUpdate() este folosită atunci când interogarea dumneavoastră modifică ceva într-un tabel. Ar putea fi orice:

  • Declarație UPDATE
  • instrucțiunea INSERT
  • Declarația DELETE
  • Declarație CALL PROCEDURE

Această metodă returnează numărul de rânduri modificate (sau șterse).

Să scriem o solicitare care va crește salariul tuturor angajaților noștri cu 1000 de ruble.


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

După ce am rulat acest cod, a returnat numărul 6 pe masa mea. Tabelul meu avea 6 rânduri. Deci toate liniile au fost schimbate.

a executa()

Uneori pot apărea situații în viața ta când nu știi exact ce cerere trebuie să executi - o selecție sau o modificare a datelor. În acest caz, creatorii JDBC i-au adăugat o altă metodă generică - execute() .

Această metodă poate fi folosită în locul metodelor executeQuery() și executeUpdate() . Îți amintești cum diferă aceste metode? Dreapta. Tip de rezultat. Prin urmare, creatorii JDBC au venit cu o astfel de soluție.

Metoda execute() returnează boolean. Dacă această valoare este adevărată , atunci o solicitare de preluare a datelor a fost în curs și trebuie să apelați metoda getResultSet() pentru a obține datele. Exemplu:


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

Dacă această valoare este falsă , atunci o solicitare de modificare a datelor a fost în curs și trebuie să apelați metoda getUpdateCount() pentru a obține numărul de rânduri schimbat. Exemplu:


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

Să scriem o metodă care afișează rezultatul unei interogări:


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

Acesta este modul în care metoda execute() este folosită de obicei în practică.