首页 > 代码库 > 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调用存储过程的例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。