首页 > 代码库 > JDBC调用存储过程的例子

JDBC调用存储过程的例子

下面是我学到了Oracle存储过程,在这里跟大家简单的分享一下利用JDBC调用存储过程的例子:

废话就不啰嗦,现在就直接上机代码。

首先我利用的是Oracle中默认的 scott 数据库里的 emp员工信息表作为本次的例子:

如果你的Oracle里没有 emp默认的员工表,需要创建类似以下的 emp表。

技术分享

 

在PL/SQL中需要写以下的调用存储过程的代码:

 1 --在初次打开PL/SQL时要运行以下这行代码
 2 set serveroutput on
 3 
 4 
 5 --存储过程
 6 CREATE OR REPLACE PROCEDURE findEmpJob(myempno IN NUMBER,myename OUT varchar2,myjob OUT varchar2)
 7 AS
 8 BEGIN
 9   SELECT ename,job INTO myename,myjob FROM emp WHERE empno=myempno;
10 END;
11 /

 

先在eclipse中创建一个项目,比如JDBC_procedure。创建好后类似如下这样:

例子用的数据库是Oracle,需要导入的Oracle的jar包

技术分享

 

一、创建一个JdbcUtil底层类用来连接数据库,代码如下:

 1 package testjdbc;
 2 
 3 import java.sql.*;
 4 
 5 public class JdbcUtil {
 6 
 7     private String driver = "oracle.jdbc.driver.OracleDriver";
 8     // 1521是主端口,也可能是其它端口去连接oracle数据库
 9     private String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
10     private String username = "scott";
11     private String password = "123456";
12     private Connection conn;
13     private CallableStatement cstmt;
14 
15     public String findEmpJob(int myempno) {
16         // 加载驱动
17         try {
18             Class.forName(driver);
19         } catch (Exception e) {
20             e.printStackTrace();
21             throw new RuntimeException("oracle驱动注册失败");
22         }
23         // 获取一个连接
24         try {
25             conn = DriverManager.getConnection(url, username, password);
26         } catch (Exception e) {
27             e.printStackTrace();
28             throw new RuntimeException("oracle连接获取失败");
29         }
30         
31         String sql = "{call findEmpJob(?,?,?)}";
32         try {
33             cstmt = conn.prepareCall(sql);
34             //hibernate从0开始,jdbc从1开始
35             cstmt.setInt(1,myempno);//in值
36             cstmt.registerOutParameter(2,Types.VARCHAR);//out值
37             cstmt.registerOutParameter(3,Types.VARCHAR);//out值
38             //执行调用存储过程
39             cstmt.execute();
40             
41             
42             String ename = cstmt.getString(2);
43             String job = cstmt.getString(3);
44 
45             //简单测验一下在控制台输出
46             System.out.println(ename+"的工作是:" + job); 
47             cstmt.close();
48             conn.close();
49             return job;
50         } catch (SQLException e) {
51             // TODO Auto-generated catch block
52             System.out.println("执行过程中异常:"+e.getMessage());
53         }
54         
55         return "";
56     }
57 }

 

二、创建一个servlet类 比如 Test.java

 1 package testjdbc;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 
10 /**
11  * Servlet implementation class Test
12  */
13 @WebServlet("/Test")
14 public class Test extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16        
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public Test() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24 
25     
26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27         // TODO Auto-generated method stub
28         int empno = Integer.parseInt( request.getParameter("empno") );
29         JdbcUtil ju = new JdbcUtil();
30         ju.findEmpJob(empno);
31     }
32 
33     
34     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35         // TODO Auto-generated method stub
36         doGet(request, response);
37     }
38 
39 }

 

三、在写一个jsp页面,例如:index.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>测试JDBC调用存储过程</title>
 8 </head>
 9 <body>
10 <form action="Test" method="post">
11 员工编号:<input name="empno" type="text">
12         <input type="submit">
13 
14 </form>
15 </body>
16 </html>

下面是运行项目的效果:在控制台中检验输出结果。

成功运行,并跳转到jsp页面

技术分享

在控制台可以看到如下输出:

技术分享

 

到这里利用JDBC调用Oracle的存储过程就介绍完了。

感谢大家的支持!

如需转载请注明出处:http://www.cnblogs.com/ZRJ-boke/p/6626851.html

 

JDBC调用存储过程的例子