J2EE调用存储过程

开发 后端
本文讲述了J2EE调用存储过程。首先讲解存储过程的分类,然后提供了几个范例以供Java学习者参考。

1.存储过程分类

分为"系统级存储过程"和"用户级存储过程"
用户级存储过程分为有参数的和无参数的
而有参数的又分为:
1)有输入参数无输出参数
2)有输出参数无输入参数
3)有输入又有输出参数

2.JAVA调用存储(J2EE调用存储)过程例子

1)在SqlServer里创建存储过程,代码如下:

alter proc proc_productName   //proc_productName存储过程名  
@productName varchar(50)      //输入参数  
as  
select productID,productName from Products where productName like @productName;  
 
exec proc_productName @productName = '%f%'  //测试存储过程写的是否正确  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

1)创建连接池

2)假如我们用DBCP来调用连接池,代码如下:

   public static void getname(String parname) {  
BasicDataSource bds=new BasicDataSource();  
bds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
bds.setUrl("jdbc:sqlserver://localhost:1433;databaseName=NorthWind");  
bds.setUsername("sa");  
bds.setPassword("");  
 
String sql="{call proc_productName(?) }";  //call 存储过程名 输入参数  
 
ResultSet rs=null;  
Connection conn=null;  
 
CallableStatement cs=null;  //相对于pstmt    
try {  
 conn=bds.getConnection();     
 cs=conn.prepareCall(sql);  
 cs.setString(1,"%f%");     //给Sql存储过程输入参数赋值  
 rs=cs.executeQuery();  
 while(rs.next()){  
  System.out.println(rs.getString("productName"));  
 }  
catch (SQLException e) {  
 e.printStackTrace();  
}finally{  
 try {  
  rs.close();  
  cs.close();  
  conn.close();  
 } catch (SQLException e) {  
  // TODO Auto-generated catch block  
  e.printStackTrace();  
 }  
   
}   
}  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.

3.Java调用存储过程

重点语句截取,其它参照上面例题

1)调用无参数的存储过程

sql="{call proc_viewProduct}";  
 
CallableStatement cstmt=conn.prepareCall(sql);  
ResultSet rs=cstmt.executeQuery();  
while(rs.next)  
 System.out.println(rs.getString("productName"));  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

2)有输入参数

sql="{call proc_FindByProducts(?)}";  
sctmt.setString(1,"%f%"); 
  • 1.
  • 2.

3)即有输入又有输出

  BasicDataSource basicDataSource = new BasicDataSource();  
basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
basicDataSource.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=Northwind");  
basicDataSource.setUsername("sa");  
basicDataSource.setPassword("qaz123");  
String sql = "{call proc_ViewProduct}";  
sql = "{call proc_FindByProductNameFromProduct(?)}";  //输入参数  
sql = "{call proc_FindProductNameOutPut(?,?)}";       //输出参数  
//sql = "{call fyproduct(?,?)}";  
try {  
 Connection conn = basicDataSource.getConnection();  
 CallableStatement cstmt = conn.prepareCall(sql);  
 //cstmt.setInt(1,2);  
 cstmt.setString(1,"'%f%'");    
 cstmt.registerOutParameter(2,java.sql.Types.INTEGER);    
 ResultSet rs = cstmt.executeQuery();  
 while(rs.next()){  
  System.out.println(rs.getString("productName"));  
 }  
 System.out.println(cstmt.getInt(2));  
 rs.close();  
 cstmt.close();  
 conn.close();  
catch (SQLException e) {  
 // TODO Auto-generated catch block  
 e.printStackTrace();  
}  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

J2EE调用存储过程就介绍到这里。

【编辑推荐】

  1. J2EE体系架构设计介绍(2)
  2. J2EE体系架构设计介绍(1)
  3. 基于开源搜索引擎的架构设计和J2EE实现(二)
  4. 对J2EE开发中常用的开源项目介绍
  5. J2EE体系架构设计介绍(3)
责任编辑:book05 来源: csdn
相关推荐

2009-06-22 11:04:00

Jdbc存储过程

2009-06-22 17:34:40

J2EE架构

2009-06-23 08:06:46

J2EE体系架构J2EE模型J2EE设计模式

2009-06-10 16:25:43

J2EE架构架构

2009-06-10 14:10:23

J2EE学习J2EE是什么

2009-06-11 17:06:11

J2EE历史Java EE概述

2009-06-10 13:37:06

J2EE可伸缩性J2EE灵活性J2EE维护

2009-06-23 16:48:26

J2EE常见问题J2EE平台

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-22 17:05:41

Java EEJava企业应用

2009-06-22 16:21:02

J2EE线程

2009-06-18 16:13:14

J2EE开发

2009-06-22 11:15:00

J2EE应用测试

2011-05-16 14:07:58

J2EE

2009-06-11 17:19:47

J2EE设计模式Template

2009-06-19 17:03:44

J2EE学习

2009-06-11 17:11:07

J2EE设计模式工厂模式

2009-02-23 11:18:06

J2EE架构师Java

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2009-06-23 16:50:24

点赞
收藏

51CTO技术栈公众号