考查对Statement,PreparedStatement和CallableStatement的使用
问:
Statement,PreparedStatement和CallableStatement的区别?
解析:
1.CallableStatement
CallableStatement对象为所有的DBMS提供了一种以标准形式调用已储存过程的方法。调用储存过程有两种格式:一种为包含结果参数的格式,另一种为不包含结果参数的格式。如果使用结果参数,他必须注册为一个OUT参数。参数通过编号顺序被引用。第一个参数是1。示例代码如下:
{?=call[...]}
{call[...]}
CallableStatement继承PreparedStatement
2.PreparedStatement
一条SQL语句是预编译的,且存放在PreparedStatement对象中。该对象可用于有效的多次执行该SQL语句。
注:用于设置IN参数值的SET方法必须指定与定义输入参数的SQL Type兼容的类型。例如,如果IN参数有SQL Type Integer,则应该使用setInt方法。
如果需要任意的参数类型转换,则setObject()方法应与目标SQL Type一起使用。
3.Statement
Statement对象用于执行一条静态的SQL语句,并获取它产生的结果。
任何时候每条语句仅能打开一个ResultSet。因此,如果对一个ResultSet的读出与另一个ResultSet的读出交错,那么每个ResultSet一定由不同的语句产生。如果有ResultSet存在,所有的语句执行方法都默认关闭当前的ResultSet。
答:
继承关系:Statement是PreparedStatement的父类,CallableStatement是PreparedStatement的子类。
Statement用于执行一条普通的动态SQL语句,PreparedStatement用于执行预编译好的SQL语句,CallableStatement用于调用数据库的存储过程。