Интерфејс ПрепаредСтатемент је подинтерфејс Изјаве. Користи се за извршавање параметризованог упита.
Погледајмо пример параметаризованог упита:
String sql='insert into emp values(?,?,?)';
Као што видите, прослеђујемо параметар (?) за вредности. Његова вредност ће бити постављена позивањем метода за подешавање ПрепаредСтатемент-а.
Зашто користити ПрепаредСтатемент?
Побољшава перформансе : Перформансе апликације ће бити брже ако користите ПрепаредСтатемент интерфејс јер се упит компајлира само једном.
Како добити инстанцу ПрепаредСтатемента?
Метода реадиСтатемент() интерфејса Цоннецтион се користи за враћање објекта ПрепаредСтатемент. Синтакса:
public PreparedStatement prepareStatement(String query)throws SQLException{}
Методе интерфејса ПрепаредСтатемент
Важне методе интерфејса ПрепаредСтатемент су дате у наставку:
Метод | Опис |
---|---|
публиц воид сетИнт(инт парамИндек, инт вредност) | поставља целобројну вредност на дати индекс параметра. |
публиц воид сетСтринг(инт парамИндек, стринг вредност) | поставља вредност Стринг на дати индекс параметра. |
публиц воид сетФлоат(инт парамИндек, флоат валуе) | поставља флоат вредност на дати индекс параметра. |
публиц воид сетДоубле(инт парамИндек, дупла вредност) | поставља двоструку вредност за дати индекс параметра. |
публиц инт екецутеУпдате() | извршава упит. Користи се за креирање, испуштање, уметање, ажурирање, брисање итд. |
јавни РесултСет екецутеКуери() | извршава упит за избор. Враћа инстанцу РесултСет-а. |
Пример интерфејса ПрепаредСтатемент који убацује запис
Прво направите табелу као што је дато у наставку:
create table emp(id number(10),name varchar2(50));
Сада уметните записе у ову табелу помоћу кода датог у наставку:
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);} } }преузмите овај пример
Пример интерфејса ПрепаредСтатемент који ажурира запис
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');преузмите овај пример
Пример интерфејса ПрепаредСтатемент који брише запис
PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted');преузмите овај пример
Пример интерфејса ПрепаредСтатемент који преузима записе табеле
PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); }преузмите овај пример
Пример ПрепаредСтатемента за уметање записа док корисник не притисне н
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(); }}