logo

PreparedStatement felület

A PreparedStatement interfész a Statement alinterfésze. Paraméterezett lekérdezések végrehajtására szolgál.

Nézzük a paraméterezett lekérdezés példáját:

ábécé számokként
 String sql='insert into emp values(?,?,?)'; 

Mint látható, paramétert (?) adunk át az értékekhez. Értékét a PreparedStatement setter metódusainak meghívásával állítjuk be.

Miért érdemes a PreparedStatementet használni?

Javítja a teljesítményt : Az alkalmazás teljesítménye gyorsabb lesz, ha a PreparedStatement felületet használja, mivel a lekérdezés csak egyszer kerül lefordításra.


Hogyan szerezhető be a PreparedStatement példánya?

A Connection interfész readyStatement() metódusa a PreparedStatement objektum visszaadására szolgál. Szintaxis:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

A PreparedStatement felület módszerei

A PreparedStatement interfész fontos módszerei az alábbiak:

MódszerLeírás
public void setInt(int paramIndex, int érték)beállítja az egész értéket az adott paraméterindexhez.
public void setString(int paramIndex, Karakterlánc értéke)beállítja a String értékét az adott paraméterindexre.
public void setFloat(int paramIndex, float value)beállítja a lebegő értéket az adott paraméterindexre.
public void setDouble(int paramIndex, double value)beállítja a dupla értéket az adott paraméterindexhez.
public int executeUpdate()végrehajtja a lekérdezést. Létrehozásra, dobásra, beszúrásra, frissítésre, törlésre stb.
public ResultSet executeQuery()végrehajtja a kiválasztási lekérdezést. A ResultSet egy példányát adja vissza.

Példa a rekordot beszúró PreparedStatement felületre

Először is hozzon létre táblázatot az alábbiak szerint:

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

Most illessze be a rekordokat ebbe a táblázatba az alábbi kóddal:

hány hét van egy hónapban
 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);} } } 
töltse le ezt a példát

Példa a rekordot frissítő PreparedStatement felületre

 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'); 
töltse le ezt a példát

Példa a rekordot törlő PreparedStatement felületre

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
töltse le ezt a példát

Példa a PreparedStatement felületre, amely lekéri egy tábla rekordjait

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
töltse le ezt a példát

Példa a PreparedStatementre rekordok beszúrásához, amíg a felhasználó meg nem nyomja az n gombot

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