Execuţia unei instrucţiuni SQL




După ce s-a stabilit conexiunea, se pot trimite instrucţiuni SQL către baza de date. API-ul JDBC nu verifică corectitudinea instrucţiunii şi nici apartenenţa ei la un anumit standard SQL, permiţându-se astfel trimiterea chiar de instrucţiuni non-SQL. Programatorul este cel care ştie dacă SGBD-ul interogat suportă interogările pe care le trimite şi, dacă nu, el este cel care va trata excepţiile primite drept răspuns. Dacă instrucţiunea este SQL, atunci aceasta poate face anumite operaţii asupra bazei de date, cum ar fi căutare, actualizare sau ştergere [8].
API-ul JDBC specifică trei interfeţe pentru trimiterea de interogări către bazele de date, fiecăreia corespunzându-i o metodă specială în clasa Connection, de creare a instanţelor corespunzătoare [10].
Clasa Statement - este folosită pentru trimiterea de instrucţiuni SQL simple, fără parametri. Pentru execuţia unei astfel de instrucţiuni se foloseşte metoda createStatement, aplicată unui obiect Connection; această metodă întoarce un obiect din clasa Statement. Se pot aplica apoi una dintre metodele: executeQuery, executeUpdate sau execute obiectului de tip Statement pentru a trimite SGBD-ului instrucţiunile SQL. Metoda executeQuery este folosită în cazul interogărilor care returnează mulţimi rezultat (instanţe ale clasei ResultSet), aşa cum este cazul instrucţiunilor SELECT. Pentru operaţiile de actualizare sau ştergere, cum ar fi INSERT, UPDATE sau DELETE, se foloseşte metoda executeUpdate aplicată obiectului de tip Statement, rezultând un întreg care reprezintă numărul înregistrării afectate. Metoda execute este folosită în cazul în care se obţin mai mult de o mulţime rezultat sau un număr de linie.



Clasa PreparedStatement - permite folosirea instrucţiunilor SQL precompilate şi a parametrilor de intrare în interogări. Această metodă de a face interogări este mult mai rapidă decât folosirea clasei Statement în cazul în care dorim execuţia repetată a unei instrucţiuni SQL, deoarece aceasta este compilată o singură dată în momentul creării instanţei clasei PreparedStatement şi folosită apoi repetat, eventual cu valori diferite pentru parametri. Se poate folosi şi în cazul în care nu există parametri.
PreparedStatement prep = con.prepareStatement(
\"INSERT into Data values (?, ?)\");
Argumentele de intrare, indicate prin \'?\', pot fi mapate, folosind metode de tipul setXXX.
prep.setString(1, \"Jim\");
prep.setInt(2, 70);

Clasa CallableStatement - permite utilizatorului să interacţioneze cu procedurile stocate. Folosirea acestei interfeţe este aproximativ identică cu folosirea obiectului PreparedStatement. Parametrii procedurilor pot fi de intrare sau parametrii de ieşire. Parametrii de ieşire trebuie să fie înregistraţi prin intermediul metodei CallableStatement. registerOutParamter. [5]