J2EE调用存储过程

1.存储过程分类

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

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

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

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

1)创建连接池

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

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

3.Java调用存储过程

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

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

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

2)有输入参数

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

3)即有输入又有输出

 
 
 
  1.   BasicDataSource basicDataSource = new BasicDataSource();  
  2. basicDataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
  3. basicDataSource.setUrl("jdbc:sqlserver://localhost:1433;DatabaseName=Northwind");  
  4. basicDataSource.setUsername("sa");  
  5. basicDataSource.setPassword("qaz123");  
  6. String sql = "{call proc_ViewProduct}";  
  7. sql = "{call proc_FindByProductNameFromProduct(?)}";  //输入参数  
  8. sql = "{call proc_FindProductNameOutPut(?,?)}";       //输出参数  
  9. //sql = "{call fyproduct(?,?)}";  
  10. try {  
  11.  Connection conn = basicDataSource.getConnection();  
  12.  CallableStatement cstmt = conn.prepareCall(sql);  
  13.  //cstmt.setInt(1,2);  
  14.  cstmt.setString(1,"'%f%'");    
  15.  cstmt.registerOutParameter(2,java.sql.Types.INTEGER);    
  16.  ResultSet rs = cstmt.executeQuery();  
  17.  while(rs.next()){  
  18.   System.out.println(rs.getString("productName"));  
  19.  }  
  20.  System.out.println(cstmt.getInt(2));  
  21.  rs.close();  
  22.  cstmt.close();  
  23.  conn.close();  
  24. catch (SQLException e) {  
  25.  // TODO Auto-generated catch block  
  26.  e.printStackTrace();  
  27. }  

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

【编辑推荐】

  1. J2EE体系架构设计介绍(2)
  2. J2EE体系架构设计介绍(1)
  3. 基于开源搜索引擎的架构设计和J2EE实现(二)
  4. 对J2EE开发中常用的开源项目介绍
  5. J2EE体系架构设计介绍(3)
THE END