Інтерфейс PreparedStatement є підінтерфейсом Statement. Використовується для виконання параметризованого запиту.
Розглянемо приклад параметризованого запиту:
String sql='insert into emp values(?,?,?)';
Як бачите, ми передаємо параметр (?) для значень. Його значення буде встановлено шляхом виклику методів налаштування PreparedStatement.
Навіщо використовувати PreparedStatement?
Покращує продуктивність : Продуктивність програми буде швидшою, якщо ви використовуєте інтерфейс PreparedStatement, оскільки запит компілюється лише один раз.
фрагмент java масиву
Як отримати екземпляр PreparedStatement?
Для повернення об’єкта PreparedStatement використовується метод pripraveStatement() інтерфейсу Connection. Синтаксис:
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) | встановлює значення float на заданий індекс параметра. |
public void setDouble(int paramIndex, подвійне значення) | встановлює подвійне значення для заданого індексу параметра. |
public int executeUpdate() | виконує запит. Він використовується для створення, видалення, вставки, оновлення, видалення тощо. |
public ResultSet executeQuery() | виконує запит на вибірку. Він повертає екземпляр ResultSet. |
Приклад інтерфейсу PreparedStatement, який вставляє запис
Спочатку створіть таблицю, як показано нижче:
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, який оновлює запис
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(); }}