如何使用JDBC调用存储在数据库中的函数或存储过程:
* 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
* 对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串, * 该字符串用于指明如何调用存储过程* 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数
* 3.通过CallableStatement对象的setXxx()方法设定IN或In out
* 参数,若想将参数设为null,可以使用setNUll()* 4.通过CallableStatement对象的execute()方法执行存储过程
* 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()函数进行获取
具体的代码实现:
1 @Test 2 public void testCallableStatement() { 3 Connection connection = null; 4 /** 5 * 调用存储函数 1.{?= call[( , , ...)]} 6 * 调用存储过程 2.{call [( , , ...)]} 7 */ 8 // 调用存储函数和调用存储过程,一个sql语句的区别 9 String sql = "{?= call [( , , ...)]}";10 CallableStatement callableStatement = null;11 try {12 13 connection = JDBCTools.getConnection();14 /*15 * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement16 * 对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,17 * 该字符串用于指明如何调用存储过程18 */19 callableStatement = connection.prepareCall(sql);20 21 /*22 * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数23 */24 callableStatement.registerOutParameter(1, Types.NUMERIC);25 callableStatement.registerOutParameter(3, Types.NUMERIC);26 27 /*28 * 3.通过CallableStatement对象的setXxx()方法设定IN或In out29 * 参数,若想将参数设为null,可以使用setNUll()30 */31 callableStatement.setInt(2, 80);32 33 /* 4.通过CallableStatement对象的execute()方法执行存储过程 */34 callableStatement.execute();35 36 /*37 * 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()38 */39 double sumSalary = callableStatement.getDouble(1);40 long empCount = callableStatement.getLong(3);41 } catch (Exception e) {42 e.printStackTrace();43 } finally {44 JDBCTools.release(null, callableStatement, connection);45 }46 }
调用函数和存储过程的sql语句的区别:
* 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
* 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}这个知识点暂时没用到,先做下笔记,待以后用到以后再深入研究,JDBC的学习暂时告一段落,开启新的学习征程!
个人感悟:把简单的事情做到极致,打扎实的基础,写优秀的代码
本文为博主原创文章,转载请注明出处:
1、本博客的原创原创文章,都是本人平时学习所做的笔记,如有错误,欢迎指正。2、如有侵犯您的知识产权和版权问题,请通知本人,本人会即时做出处理文章。3、本博客的目的是知识交流所用,转载自其它博客或网站,作为自己的参考资料的,感谢这些文章的原创人员