Statement 和 PreparedStatement 的区别
1.Statement:
它用于访问数据库。语句接口不能接受参数,在运行时使用静态 SQL 语句时很有用。如果只想运行一次 SQL 查询,则此接口优于 PreparedStatement。
例子 –
//Creating The Statement Object
Statement geekdocsDemo = con.createStatement();
//Executing The Statement
geekdocsDemo.executeUpdate("CREATE TABLE STUDENT(ID NUMBER NOT NULL, NAME VARCHAR)");
2. PreparedStatement:
当想多次使用 SQL 语句时使用它。PreparedStatement
接口在运行时接受输入参数。
例子 –
//Creating the PreparedStatement object
PreparedStatement geekdocsDemo = con.prepareStatement("update STUDENT set NAME = ? where ID = ?");
//Setting values to place holders
//Assigns "RAM" to first place holder
geekdocsDemo.setString(1, "RAM");
//Assigns "720" to second place holder
geekdocsDemo.setInt(2, 720);
//Executing PreparedStatement
geekdocsDemo.executeUpdate();
Statement 和 PreparedStatement 之间的区别:
Statement | PreparedStatement |
---|---|
当 SQL 查询只执行一次时使用它。 | 用于多次执行 SQL 查询时使用。 |
不能在运行时传递参数。 | 可以在运行时传递参数。 |
用于 CREATE、ALTER、DROP 语句。 | 用于要执行多次的查询。 |
性能非常低。 | 性能优于Statement。 |
它是基本接口。 | 它扩展了语句接口。 |
用于执行正常的 SQL 查询。 | 用于执行动态 SQL 查询。 |
不能使用语句来读取二进制数据。 | 可以使用 Preparedstatement 来读取二进制数据。 |
它用于 DDL 语句。 | 它用于任何 SQL 查询。 |
不能使用语句来写入二进制数据。 | 可以使用 Preparedstatement 来编写二进制数据。 |
没有二进制协议用于通信。 | 二进制协议用于通信。 |