题5 Statement,PreparedStatement和CallableStatement的区别

考查对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用于调用数据库的存储过程。

上一篇:SQL注入命令优化


下一篇:5.表关系设计、范式、JDBC