java代碼調用數據庫存儲過程


由於前邊有寫java代碼調用數據庫,感覺應該把java調用存儲過程也寫一下,所以筆者補充該篇!

package testSpring;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

import oracle.jdbc.OracleTypes;


public class Test1 {
   public static void main(String[] args) {
    Connection con=null;
    ResultSet res=null;
    CallableStatement call=null;
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        String url="jdbc:oracle:thin:@192.168.224.87:1523:orcl";
        String userName="gb_report";
        String passWord="gb_report123$";
        System.out.println("連接數據庫成功!");
        con=DriverManager.getConnection(url,userName,passWord);
        
        
        call=con.prepareCall("{call P_COMMON.QUERY_PROVINCE_PAGE(?,?,?,?,?,?,?,?,?,?,?)}");//P_COMMON為包名,QUERY_PROVINCE_PAGE為存儲過程名,?代表參數
        call.registerOutParameter(4, OracleTypes.NUMBER);//參數下標為4及返回值的類型
        call.registerOutParameter(5, OracleTypes.NUMBER);
        call.registerOutParameter(7, OracleTypes.NUMBER);
        call.registerOutParameter(8, OracleTypes.INTEGER);
        call.registerOutParameter(9, OracleTypes.VARCHAR);
        call.registerOutParameter(10,OracleTypes.VARCHAR);
        call.registerOutParameter(11,OracleTypes.CURSOR);//注意這里返回值類型為游標
        
        call.setString(1, "");//參數下標為1,輸入參數類型為varchar(java對應string)
        call.setString(2, "");
        call.setString(3, "");
        call.setString(6, "");
        
        //執行
        call.execute();
        
        res = (ResultSet)call.getObject(11);//接受參數下標為11的返回值為游標類型,用ResultSet
        while(res.next()){
            System.out.println("行政ID:"+res.getString("ITEMID")+";省份名稱:"+res.getString("ITEMNAME")+";");
        }
        
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        
        try {
            if(res!=null){
                res.close();
            }else if(call!=null){
                call.close();
            }else if (con!=null) {
                con.close();
            }
            System.out.println("關閉連接!");
            
        } catch (Exception e2) {
            e2.printStackTrace();
        }
    }
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM