logo

PreparedStatement interfeiss

PreparedStatement saskarne ir paziņojuma apakšinterfeiss. To izmanto, lai izpildītu parametrizētu vaicājumu.

Apskatīsim parametrizēta vaicājuma piemēru:

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

Kā redzat, mēs nododam parametru (?) vērtībām. Tās vērtība tiks iestatīta, izsaucot PreparedStatement setter metodes.

Kāpēc izmantot PreparedStatement?

Uzlabo veiktspēju : Lietojumprogrammas veiktspēja būs ātrāka, ja izmantosit PreparedStatement saskarni, jo vaicājums tiek kompilēts tikai vienu reizi.


Kā iegūt PreparedStatement instanci?

Savienojuma interfeisa metode preparatStatement() tiek izmantota, lai atgrieztu PreparedStatement objektu. Sintakse:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

PreparedStatement saskarnes metodes

Tālāk ir norādītas svarīgākās PreparedStatement saskarnes metodes:

MetodeApraksts
public void setInt(int paramIndex, int value)iestata vesela skaitļa vērtību dotajam parametra indeksam.
public void setString(int paramIndex, String value)iestata virknes vērtību dotajam parametra indeksam.
public void setFloat(int paramIndex, peldošā vērtība)iestata peldošo vērtību dotajam parametra indeksam.
public void setDouble(int paramIndex, dubultā vērtība)iestata dubulto vērtību dotajam parametra indeksam.
public int executeUpdate()izpilda vaicājumu. To izmanto, lai izveidotu, nomestu, ievietotu, atjauninātu, dzēstu utt.
publisks ResultSet executeQuery()izpilda atlases vaicājumu. Tas atgriež ResultSet gadījumu.

PreparedStatement saskarnes piemērs, kas ievieto ierakstu

Vispirms izveidojiet tabulu, kā parādīts zemāk:

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

Tagad ievietojiet ierakstus šajā tabulā ar tālāk norādīto kodu:

 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);} } } 
lejupielādējiet šo piemēru

PreparedStatement saskarnes piemērs, kas atjaunina ierakstu

 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'); 
lejupielādējiet šo piemēru

PreparedStatement saskarnes piemērs, kas dzēš ierakstu

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
lejupielādējiet šo piemēru

PreparedStatement saskarnes piemērs, kas izgūst tabulas ierakstus

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
lejupielādējiet šo piemēru

Sagatavotā paziņojuma piemērs, lai ievietotu ierakstus, līdz lietotājs nospiež 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(); }}