Statement 和 CallableStatement 的区别
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. CallableStatement:
当要使用数据库存储过程时使用它。CallableStatement 可以接受运行时输入参数。
例子 –
//Creating CallableStatement object
CallableStatement geekdocsDemo = con.prepareCall("{call anyProcedure(?, ?, ?)}");
//Use geekdocsDemo.setter() methods to pass IN parameters
//Use geekdocsDemo.registerOutParameter() method to register OUT parameters
//Executing the CallableStatement
geekdocsDemo.execute();
//Use geekdocsDemo.getter() methods to retrieve the result
Statement 和 CallableStatement 之间的区别:
Statement | CallableStatement |
---|---|
当 SQL 查询只执行一次时使用它。 | 当要执行存储过程时使用它。 |
不能在运行时传递参数。 | 可以在运行时传递参数。 |
用于 CREATE、ALTER、DROP 语句。 | 用于执行函数功能。 |
性能非常低。 | 性能优于Statement。 |
用于执行正常的 SQL 查询。 | 用于调用存储过程。 |
它是基本接口。 | 它扩展了 PreparedStatement 接口。 |
它用于 DDL 语句。 | 它用于存储过程。 |
不能使用语句来读取二进制数据.. | 可以使用 CallableStatement 来读取二进制数据.. |