JAVA調用數據庫存儲過程


1.首相給數據庫創建一個簡單的存儲過程:(在這里我是創建的Oracle數據庫的存儲過程)

create or replace procedure stu_upd(nname varchar2,npassword varchar2) is
begin
update student set name=nname where password=npassword;
end pl_pro;

create or replace procedure stu_del(nid number)is
begin
delete from student where ID=nid;
end stu_del;


create or replace procedure stu_ins(nid number,nname varchar2,npassword varchar2,nage varchar2,nemail varchar2)is
begin
insert into student(id,name,password,age,email) values(nid,nname,npassword,nage,nemail);
end stu_ins;

 

2.通過JAVA程序與數據庫建立連接:

package jdbc;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.commons.dbcp.BasicDataSource;

public class BaseDAO {

    private static BasicDataSource ds=null;
    //private static Connection conn=null;
    private static String url;
    private static String user;
    private static String password;
    private static String driverName;
    static{        
        try {
            //1.讀取配置文件conf.properties,采用java.util.Properties來讀取
            Properties pp=new Properties();
            //2.通過文件流讀取並解析配置文件內容,本地數據庫用的mysql,所以把配置文件mysql的配置放開,其他數據庫配置注釋
            pp.load(new FileInputStream("src/jdbc.properties"));
            driverName=pp.getProperty("jdbc.driverClassName");//獲取驅動名稱                        
            url=pp.getProperty("jdbc.url");//獲取數據庫的url                                
            user=pp.getProperty("jdbc.username");//用戶名                                          
            password=pp.getProperty("jdbc.password");//密碼                                    
            int maxActive=Integer.parseInt(pp.getProperty("jdbc.maxActive"));//獲取最大連接數         
            int maxWait=Integer.parseInt(pp.getProperty("jdbc.maxWait"));//獲取最大等待時間                          
            //3.創建一個連接池                                                                  
            ds=new BasicDataSource();                                                           
            ds.setDriverClassName(driverName);//設置驅動名稱                                    
            ds.setUrl(url);//設置數據庫地址                                                     
            ds.setUsername(user);//設置用戶名                                                   
            ds.setPassword(password);//設置密碼                                                 
            ds.setMaxActive(maxActive);//設置最大連接數                                         
            ds.setMaxWait(maxWait);//設置最大等待時間    
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    //第一種加載BasicDataSource進行數據庫的連接
    public static Connection getConnection(){        
        try {
            System.out.println("數據庫連接成功");
            return ds.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("連接數據庫失敗");
            return null;
        }        
    }
    //第二種通過傳統的DriverManager進行數據庫連接
    public static Connection getConnection2(){
        try {
            Class.forName(driverName);
            Connection conn = DriverManager.getConnection(url,user,password);
            return conn;
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }        
        return null;
    }
    
    
    public static void Close(Connection conn){
        if(conn!=null){                                                                       
            try {                                                                               
                conn.close();                                                                     
            } catch (Exception e) {                                                             
                e.printStackTrace();                                                              
            }                                                                                   
        }
    }
}



3.數據庫連接建立完成之后就是調用存儲過程操作數據庫了:
package main;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

import jdbc.BaseDAO;

public class test {

    /**
     * @param args
     * @throws SQLException 
     * @throws ClassNotFoundException 
     */
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // TODO Auto-generated method stub
        
        //加載數據庫的連接
        Connection conn=BaseDAO.getConnection2();
        
        //創建Oracle存儲過程的對象,調用存儲過程 
       // CallableStatement c=conn.prepareCall("{call pl_pro(?,?)}");
        //c.setString(1, "張三");
        //c.setString(2, "123456");
        //CallableStatement c=conn.prepareCall("{call AAA(?)}");
        //c.setLong(1, 2);
        
        //創建Oracle存儲過程的對象,調用存儲過程
        CallableStatement c=conn.prepareCall("{call bbb(?,?,?,?,?)}");
        //一次給存儲過程傳遞參數
        c.setLong(1, 5);
        c.setString(2,"李四");
        c.setString(3,"123456");
        c.setString(4, "30");
        c.setString(5, "542178@.com");
        c.execute();
    }

}
 
         

 

 

 


免責聲明!

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



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