1. 程式人生 > >JDBC之java使用oracle中scott表實現增刪改查.1

JDBC之java使用oracle中scott表實現增刪改查.1

Java與oracle資料庫連線—–JDBC
Dao工具的建立

**寫部落格的目的及好處
1,為了把完成的知識點整理出來,
2,等同督促自己做學習總結
3,方便自己及同行者的閱覽
4,如有有心者,可以分享更精的知識
————————————————
該案例使用的是oracle中解鎖的scott表

案例是在java中使用sql語句來呼叫資料庫中資料,實現在java中實現使用者的增刪改查操作

oracle 的安裝是件頭疼的事,意外的就會在安裝時讓你電腦不得 不去重新裝系統了,但是這只是過程,結果我們的電腦上都會有oracle的,我在電腦上設定的oracle狀態是手動登陸,就是在電腦–管理—服務,每次開機使用時手動開啟,因為,裝了oracle電腦就很吃不消額。。。

首先,解鎖scott表:在裝oracle時使用的密碼,去新建一個表空間,在該表中解鎖oracle自帶的表scott

alter user scott account unlock;---解鎖
alter user scott identified  by scott123;---設定密碼

–在java中使用面向物件,分層模式
使用的是三層模式,
1,資料庫訪問層
2,業務邏輯層
3,表示層
步驟—
1,建立實體類,
2,建立工具類
3,dao介面,dao 實現類
4,組織介面

一,定義實體
scott表較簡單,建立實體時要注意關聯關係,封裝外來鍵
二,建立工具類
把每一功能細分好,這樣可以更加細緻的呼叫
我把連線,執行sql語句,處理結果最後close,最後呼叫關閉

“`
public class BaseDao{
//類的成員,屬性
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//定義靜態常量
private static final String DRIVER_CLASS=“oracle.jdbc.driver.OracleDriver”;
private static final String USER=”scott”;
private static final String PASS=”scott123”;
//連線資料庫
public Connection getConnection(){

    try {
        Class.forName("oracle.jdbc.drier.OracleDriver");
        conn=DriverManager.getConnection(URL,"scott","aya123");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return conn;
}

//增
public int executeUpdate(String sql){
    int ret=0;
    conn=this.getConnection();
    try {
        ps=conn.prepareStatement(sql);
        ret=ps.executeUpdate();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return ret;
}

//過載,帶佔位符的
public int executeUpdate(String sql ,Object[] parms){
    int ret=0;
    conn=this.getConnection();
    try {
        ps=conn.prepareStatement(sql);  //獲得sql語句得到的資料,放在ps“這兩裝載車上”
        if(parms!=null){
            for(int i=0;i<parms.length;i++){
                ps.setObject(i+1, parms[i]); //把ps"車上的數資料"分給parms這個陣列中
            }
        }
        ret=ps.executeUpdate();//分好了返回1,否則返回0
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return ret;
}

//過載,

public int executeUpdate(String sql ,Object parms){
    return executeUpdate(sql,new Object[]{parms});
}
//List 存放,帶佔位符
public int executeUpdate( String sql,List<Object> parms){
    int ret=0;
    conn=this.getConnection();
    try {
        ps=conn.prepareStatement(sql);
        if(parms!=null){
            for(int i=0;i<parms.size();i++){
                ps.setObject(i+1, parms.get(i));
            }
        }
        ret=ps.executeUpdate();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return ret;
}

/**
 * jdbc查詢,帶佔位符
 * @param sql
 * @param parms
 * @return rs
 */
public ResultSet executeQuery(String sql ,Object[] parms){
    conn=this.getConnection();
    try {
        ps=conn.prepareStatement(sql);
        if(parms!=null){
            for(int i=0;i<parms.length;i++){
                ps.setObject(i+1, parms[i]);
            }
        }
        rs=ps.executeQuery();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return rs;
}

//方法過載

public ResultSet executeQuery(String sql,Object parms){
    return executeQuery(sql,new Object[]{parms});
}
public ResultSet executeQuery(String sql,List parms){
    return executeQuery(sql,parms.toArray());
}

public ResultSet executeQuery(String sql){
    return executeQuery(sql,new Object[]{});
}

public void close(){
    try {
        conn.close();
        ps.close();
        rs.close();

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}