PreparedStatement接口

PreparedStatement接口是Statement的子接口,用于执行带参数的查询。

让我们来看一个参数化查询的示例:

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

如你所见,我们在值的位置上使用了参数(?)。它的值将通过调用PreparedStatement的setter方法来设置。

为什么要使用PreparedStatement?

提高性能:如果使用PreparedStatement接口,应用程序的性能将更快,因为查询只编译一次。

如何获取PreparedStatement的实例?

使用Connection接口的prepareStatement()方法来返回PreparedStatement的对象。语法如下:

public PreparedStatement prepareStatement(String query) throws SQLException{}

PreparedStatement接口的方法

PreparedStatement接口的重要方法如下:

方法描述
public void setInt(int paramIndex, int value)将整数值设置给指定的参数索引。
public void setString(int paramIndex, String value)将字符串值设置给指定的参数索引。
public void setFloat(int paramIndex, float value)将浮点数值设置给指定的参数索引。
public void setDouble(int paramIndex, double value)将双精度数值设置给指定的参数索引。
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键的示例

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想