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)假如我們用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();
- }
- }
- }
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"));
2)有輸入參數
- sql="{call proc_FindByProducts(?)}";
- sctmt.setString(1,"%f%");
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();
- }
- }
J2EE調用存儲過程就介紹到這里。
【編輯推薦】
責任編輯:book05
來源:
csdn