关闭

JDBC学习中存储过程的调用

发表于:2012-11-07 09:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lijizh1013    来源:51Testing软件测试网采编

  在Java开发中我们在很多情况下都会用到存储过程,因此我们对于存储过程的掌握也应该是非常熟练的了,这里,我仅简单提及。

  以前我们经常在命令窗口中以命令的形式来创建存储过程,并通过对存储过程的操作,来实现对数据库中数据的管理。

  这样我们就通过命令创建了一个带有三个参数的存储过程,再通过参数的设定如:

  就可以实现向数据库的相应表中插入数据了。

  再如我们通过:

  命令,就创建了带有一个输入参数,两个输出参数的存储过程了,再通过对存储过程的调用,我们就可以查看数据库表中的相应内容了如:

  以上这些都是我们通过命令窗口来实现的与数据库的连接交互,那么,我们如何通过程序达到对存储过程的调用呢?

  下面,我以两段程序来达到与上述命令窗口中实现的效果:

  该方法创建了一个带有输出参数的存储过程,并通过对该存储过程的调用,来达到对相应数据查看的效果。

publicvoid getProcedureOut(){
              con = DBCManager.getConnect();//获取连接对象
             
              try {
                 
                  //通过连接对象con的prepareCall()方法得到 CallableStatement对象 cs
               CallableStatement cs = con.prepareCall("{callmeOut(?,?,?)}");
                 
                  //为输入参数段赋值
                 
                  cs.setInt(1, 1);
                  //注册输出参数的返回值类型
                  cs.registerOutParameter(2, Types.VARCHAR);
                  cs.registerOutParameter(3, Types.INTEGER);
                  //执行语句
                  cs.execute();
                  //获取字段的值并输出
                  System.out.print("name:"+cs.getString(2)+"\t age:"+cs.getInt(3));
                 
                 
                 
              } catch (SQLException e) {
                  // TODO Auto-generatedcatch block
                  e.printStackTrace();
              }
              DBCManager.release(rs, ps, con);
           }

  该方法创建了一个带有输入参数的存储过程,并通过对该存储过程的调用,来达到向数据库中的表内录入数据的功能。

publicvoid getProcedureIn(){
              con = DBCManager.getConnect();//获取连接对象
             
              try {
                 
                  //通过连接对象con的prepareCall()方法得到 CallableStatement对象 cs
                  CallableStatement cs = con.prepareCall("{call me(?,?,?)}");
                 
                  //为输入参数段赋值
                 
                  cs.setInt(1, 7);
                  cs.setString(2, "lang");
                  cs.setInt(3,30);
                  //设置返回标志
                  boolean flag;
                  //执行语句
                   flag =cs.execute();
                  
                   if(!flag){
                      System.out.print("插入成功!");
                   }
                 
                 
                 
              } catch (SQLException e) {
                  // TODO Auto-generatedcatch block
                  e.printStackTrace();
              }
              DBCManager.release(rs, ps, con);
           }

  通过存储过程,我们便可以以更加简便的方式,来实现对数据库中数据的操作了。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号