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(); } }