如何使用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 <procedure-name>[(<arg1>,<arg2>, ...)]} 6 * 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]} 7 */ 8 // 调用存储函数和调用存储过程,一个sql语句的区别 9 String sql = "{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}"; 10 CallableStatement callableStatement = null; 11 try { 12 13 connection = JDBCTools.getConnection(); 14 /* 15 * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement 16 * 对象的实例,在使用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 out 29 * 参数,若想将参数设为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的学习暂时告一段落,Spring,我来啦!
个人感悟:把简单的事情做到极致,打扎实的基础,写优秀的代码
本文为博主原创文章,转载请注明出处:http://www.cnblogs.com/ysw-go/
1、本博客的原创原创文章,都是本人平时学习所做的笔记,如有错误,欢迎指正。
2、如有侵犯您的知识产权和版权问题,请通知本人,本人会即时做出处理文章。
3、本博客的目的是知识交流所用,转载自其它博客或网站,作为自己的参考资料的,感谢这些文章的原创人员