[总结]Java数据库连接 - 存储过程调用

[小结]Java数据库连接 - 存储过程调用

 

 

4. 存储过程调用

将上述的StatementPreparedStatement替换成java.sql.CallabelStatement.

用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。如果使用结果参数,则必须将其注册为 OUT 型参数。其他参数可用于输入、输出或同时用于二者。参数是根据编号按顺序引用的,第一个参数的编号是 1

   {?= call <procedure-name>[<arg1>,<arg2>, ...]}    带返回状态的存储过程

   {call <procedure-name>[<arg1>,<arg2>, ...]}       带返回值或不带返回值的存储过程

 IN 参数值是使用从 PreparedStatement 中继承的 set 方法设置的。在执行存储过程之前,必须注册所有 OUT 参数的类型;它们的值是在执行后通过此类提供的 get 方法检索的。

 

一般步骤:

4.1 通过java.sql.Connection实例,调用prepareCall(String sql)方法,以参数化的SQL语句作为参数,创建CallableStatement对象.

4.2 通过java.sql.CallableStatement实例,调用setXXX()方法,设置对应的参数值.其实该setXXX()方法是继承自PreparedStatement.

4.3 通过java.sql.CallableStatement实例,调用executeQuery(),executeUpdate()等方法,执行数据库查询,更新等操作.

 

关键代码:

String username = "admin";

String password = "admin";

String sql = "{call login_check(?,?)}";

      

db.cstmt = db.conn.prepareCall(sql);

db.cstmt.setString(1, username);

db.cstmt.setString(2, password);

      

 

ResultSet rs = db.cstmt.executeQuery();