PreparedStatement 和 CallableStatement 的区别
1. 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
2. PreparedStatement:
当想多次使用 SQL 语句时使用它。PreparedStatement
接口在运行时接受输入参数。
例子 –
//Creating the PreparedStatement object
PreparedStatement geekdocsDemo = con.prepareStatement("update STUDENT set NAME = ? where ID = ?");
//Setting values to place holders
geekdocsDemo.setString(1, "RAM"); //Assigns "RAM" to first place holder
geekdocsDemo.setInt(2, 512); //Assigns "512" to second place holder
//Executing PreparedStatement
geekdocsDemo.executeUpdate();
CallableStatement 和 PreparedStatement 之间的区别:
CallableStatement | PreparedStatement |
---|---|
当要执行存储过程时使用它。 | 用于多次执行 SQL 查询时使用。 |
可以传递 3 种类型的参数 IN、OUT、INOUT。 | 可以在运行时传递任何类型的参数。 |
用于执行功能。 | 用于要执行多次的查询。 |
性能非常高。 | 性能优于Statement。 |
用于调用存储过程。 | 用于执行动态 SQL 查询。 |
它扩展了 PreparedStatement 接口。 | 它扩展了语句接口。 |
没有协议用于通信。 | 协议用于通信。 |