1.Statement:
它用于访问数据库。语句接口不能接受参数,在运行时使用静态 SQL 语句时很有用。如果只想运行一次 SQL 查询,则此接口优于 PreparedStatement。

例子 -

//Creating The Statement Object  
Statement YiibaiDemo = con.createStatement();

//Executing The Statement  
YiibaiDemo.executeUpdate("CREATE TABLE STUDENT(ID NUMBER NOT NULL, NAME VARCHAR)");

2. PreparedStatement:

当想多次使用 SQL 语句时使用它。PreparedStatement 接口在运行时接受输入参数。

例子 -

//Creating the PreparedStatement object 
PreparedStatement YiibaiDemo = con.prepareStatement("update STUDENT set NAME = ? where ID = ?");

//Setting values to place holders  
//Assigns "RAM" to first place holder
YiibaiDemo.setString(1, "RAM");   

//Assigns "720" to second place holder
YiibaiDemo.setInt(2, 720);     

//Executing PreparedStatement
YiibaiDemo.executeUpdate();

Statement 和 PreparedStatement 之间的区别:

Statement PreparedStatement
当 SQL 查询只执行一次时使用它。 用于多次执行 SQL 查询时使用。
不能在运行时传递参数。 可以在运行时传递参数。
用于 CREATE、ALTER、DROP 语句。 用于要执行多次的查询。
性能非常低。 性能优于Statement。
它是基本接口。 它扩展了语句接口。
用于执行正常的 SQL 查询。 用于执行动态 SQL 查询。
不能使用语句来读取二进制数据。 可以使用 Preparedstatement 来读取二进制数据。
它用于 DDL 语句。 它用于任何 SQL 查询。
不能使用语句来写入二进制数据。 可以使用 Preparedstatement 来编写二进制数据。
没有二进制协议用于通信。 二进制协议用于通信。