J2EE調(diào)用存儲過程
1.存儲過程分類
分為"系統(tǒng)級存儲過程"和"用戶級存儲過程"
用戶級存儲過程分為有參數(shù)的和無參數(shù)的
而有參數(shù)的又分為:
1)有輸入?yún)?shù)無輸出參數(shù)
2)有輸出參數(shù)無輸入?yún)?shù)
3)有輸入又有輸出參數(shù)
2.JAVA調(diào)用存儲(J2EE調(diào)用存儲)過程例子
1)在SqlServer里創(chuàng)建存儲過程,代碼如下:
- alter proc proc_productName //proc_productName存儲過程名
- @productName varchar(50) //輸入?yún)?shù)
- as
- select productID,productName from Products where productName like @productName;
- exec proc_productName @productName = '%f%' //測試存儲過程寫的是否正確
1)創(chuàng)建連接池
2)假如我們用DBCP來調(diào)用連接池,代碼如下:
- 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 存儲過程名 輸入?yún)?shù)
- ResultSet rs=null;
- Connection conn=null;
- CallableStatement cs=null; //相對于pstmt
- try {
- conn=bds.getConnection();
- cs=conn.prepareCall(sql);
- cs.setString(1,"%f%"); //給Sql存儲過程輸入?yún)?shù)賦值
- 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調(diào)用存儲過程
重點語句截取,其它參照上面例題
1)調(diào)用無參數(shù)的存儲過程
- sql="{call proc_viewProduct}";
- CallableStatement cstmt=conn.prepareCall(sql);
- ResultSet rs=cstmt.executeQuery();
- while(rs.next)
- System.out.println(rs.getString("productName"));
2)有輸入?yún)?shù)
- 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(?)}"; //輸入?yún)?shù)
- sql = "{call proc_FindProductNameOutPut(?,?)}"; //輸出參數(shù)
- //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調(diào)用存儲過程就介紹到這里。
【編輯推薦】