logo

PreparedStatement-käyttöliittymä

PreparedStatement-rajapinta on Statementin alirajapinta. Sitä käytetään parametroidun kyselyn suorittamiseen.

Katsotaanpa esimerkkiä parametroidusta kyselystä:

 String sql='insert into emp values(?,?,?)'; 

Kuten näet, välitämme parametrin (?) arvoille. Sen arvo asetetaan kutsumalla PreparedStatementin setter-metodeja.

Miksi käyttää PreparedStatementia?

Parantaa suorituskykyä : Sovelluksen suorituskyky on nopeampi, jos käytät PreparedStatement-käyttöliittymää, koska kysely käännetään vain kerran.


Kuinka saada PreparedStatementin esiintymä?

Connection-liitännän readyStatement()-menetelmää käytetään palauttamaan PreparedStatement-objektin. Syntaksi:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

PreparedStatement-rajapinnan menetelmät

PreparedStatement-rajapinnan tärkeät menetelmät on annettu alla:

MenetelmäKuvaus
public void setInt(int paramIndex, int value)asettaa kokonaisluvun arvon annettuun parametriindeksiin.
public void setString(int paramIndex, merkkijonoarvo)asettaa merkkijonon arvon annettuun parametriindeksiin.
public void setFloat(int paramIndex, float value)asettaa kelluvan arvon annettuun parametriindeksiin.
public void setDouble(int paramIndex, double value)asettaa kaksoisarvon annettuun parametriindeksiin.
public int executeUpdate()suorittaa kyselyn. Sitä käytetään luomiseen, pudotukseen, lisäämiseen, päivittämiseen, poistamiseen jne.
julkinen tulosjoukko executeQuery()suorittaa valintakyselyn. Se palauttaa ResultSetin esiintymän.

Esimerkki PreparedStatement-liittymästä, joka lisää tietueen

Luo ensin taulukko alla olevan mukaisesti:

 create table emp(id number(10),name varchar2(50)); 

Lisää nyt tietueet tähän taulukkoon alla annetulla koodilla:

 import java.sql.*; class InsertPrepared{ public static void main(String args[]){ try{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement stmt=con.prepareStatement('insert into Emp values(?,?)'); stmt.setInt(1,101);//1 specifies the first parameter in the query stmt.setString(2,'Ratan'); int i=stmt.executeUpdate(); System.out.println(i+' records inserted'); con.close(); }catch(Exception e){ System.out.println(e);} } } 
lataa tämä esimerkki

Esimerkki PreparedStatement-liittymästä, joka päivittää tietueen

 PreparedStatement stmt=con.prepareStatement('update emp set name=? where id=?'); stmt.setString(1,'Sonoo');//1 specifies the first parameter in the query i.e. name stmt.setInt(2,101); int i=stmt.executeUpdate(); System.out.println(i+' records updated'); 
lataa tämä esimerkki

Esimerkki PreparedStatement-liittymästä, joka poistaa tietueen

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
lataa tämä esimerkki

Esimerkki PreparedStatement-liittymästä, joka noutaa taulukon tietueet

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
lataa tämä esimerkki

Esimerkki PreparedStatementista tietueiden lisäämiseksi, kunnes käyttäjä painaa n

 import java.sql.*; import java.io.*; class RS{ public static void main(String args[])throws Exception{ Class.forName('oracle.jdbc.driver.OracleDriver'); Connection con=DriverManager.getConnection('jdbc:oracle:thin:@localhost:1521:xe','system','oracle'); PreparedStatement ps=con.prepareStatement('insert into emp130 values(?,?,?)'); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println('enter id:'); int id=Integer.parseInt(br.readLine()); System.out.println('enter name:'); String name=br.readLine(); System.out.println('enter salary:'); float salary=Float.parseFloat(br.readLine()); ps.setInt(1,id); ps.setString(2,name); ps.setFloat(3,salary); int i=ps.executeUpdate(); System.out.println(i+' records affected'); System.out.println('Do you want to continue: y/n'); String s=br.readLine(); if(s.startsWith('n')){ break; } }while(true); con.close(); }}