Интерфейсът PreparedStatement е подинтерфейс на Statement. Използва се за изпълнение на параметризирана заявка.
Нека да видим примера на параметризирана заявка:
String sql='insert into emp values(?,?,?)';
Както можете да видите, ние предаваме параметър (?) за стойностите. Стойността му ще бъде зададена чрез извикване на методите за настройка на PreparedStatement.
Защо да използвате PreparedStatement?
Подобрява производителността : Изпълнението на приложението ще бъде по-бързо, ако използвате интерфейса PreparedStatement, тъй като заявката се компилира само веднъж.
Как да получа екземпляра на PreparedStatement?
Методът pripraveStatement() на интерфейса Connection се използва за връщане на обекта на PreparedStatement. Синтаксис:
public PreparedStatement prepareStatement(String query)throws SQLException{}
Методи на интерфейса PreparedStatement
Важните методи на интерфейса PreparedStatement са дадени по-долу:
Метод | Описание |
---|---|
public void setInt(int paramIndex, int value) | задава целочислената стойност на дадения индекс на параметъра. |
public void setString(int paramIndex, String value) | задава стойността на String на дадения индекс на параметъра. |
public void setFloat(int paramIndex, float value) | задава плаващата стойност на дадения индекс на параметъра. |
public void setDouble(int paramIndex, двойна стойност) | задава двойната стойност на дадения индекс на параметъра. |
public int executeUpdate() | изпълнява заявката. Използва се за създаване, пускане, вмъкване, актуализиране, изтриване и т.н. |
публичен ResultSet executeQuery() | изпълнява заявката за избор. Той връща екземпляр на ResultSet. |
Пример за интерфейс PreparedStatement, който вмъква записа
Първо създайте таблица, както е дадено по-долу:
create table emp(id number(10),name varchar2(50));
Сега вмъкнете записи в тази таблица чрез кода, даден по-долу:
if и else в bash
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, който актуализира записа
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, който изтрива записа
PreparedStatement stmt=con.prepareStatement('delete from emp where id=?'); stmt.setInt(1,101); int i=stmt.executeUpdate(); System.out.println(i+' records deleted');изтеглете този пример
Пример за интерфейс PreparedStatement, който извлича записите на таблица
PreparedStatement stmt=con.prepareStatement('select * from emp'); ResultSet rs=stmt.executeQuery(); while(rs.next()){ System.out.println(rs.getInt(1)+' '+rs.getString(2)); }изтеглете този пример
Пример за PreparedStatement за вмъкване на записи, докато потребителят не натисне 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(); }}