logo

PreparedStatement-gränssnitt

PreparedStatement-gränssnittet är ett undergränssnitt till Statement. Den används för att exekvera parametrerad fråga.

Låt oss se exemplet på parametriserad fråga:

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

Som du kan se skickar vi parameter (?) för värdena. Dess värde kommer att ställas in genom att anropa sättermetoderna för PreparedStatement.

Varför använda PreparedStatement?

Förbättrar prestanda : Applikationens prestanda blir snabbare om du använder PreparedStatement-gränssnittet eftersom frågan endast kompileras en gång.


Hur får man instansen av PreparedStatement?

Metoden prepareStatement() för Connection-gränssnittet används för att returnera objektet för PreparedStatement. Syntax:

 public PreparedStatement prepareStatement(String query)throws SQLException{} 

Metoder för PreparedStatement-gränssnitt

De viktiga metoderna för PreparedStatement-gränssnittet ges nedan:

MetodBeskrivning
public void setInt(int paramIndex, int värde)ställer in heltalsvärdet till det givna parameterindexet.
public void setString(int paramIndex, String value)ställer in String-värdet till det givna parameterindexet.
public void setFloat(int paramIndex, flytvärde)ställer in flytvärdet till det givna parameterindexet.
public void setDouble(int paramIndex, dubbelt värde)ställer in det dubbla värdet till det givna parameterindexet.
public int executeUpdate()kör frågan. Den används för att skapa, släppa, infoga, uppdatera, ta bort etc.
public ResultSet executeQuery()kör urvalsfrågan. Den returnerar en instans av ResultSet.

Exempel på PreparedStatement-gränssnitt som infogar posten

Skapa först en tabell enligt nedan:

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

Infoga nu poster i den här tabellen med koden nedan:

 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);} } } 
ladda ner det här exemplet

Exempel på PreparedStatement-gränssnitt som uppdaterar posten

 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'); 
ladda ner det här exemplet

Exempel på PreparedStatement-gränssnitt som tar bort posten

 PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted'); 
ladda ner det här exemplet

Exempel på PreparedStatement-gränssnitt som hämtar posterna i en tabell

 PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); } 
ladda ner det här exemplet

Exempel på PreparedStatement för att infoga poster tills användaren trycker på 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(); }}