JavaWeb——教你寫db數據庫連接類

db連接類

db就是database(數據庫),下面我講演示如何通過java語言通過jdbc的方式來連接到你所要的數據庫,本例中以oracle爲參考。

代碼實現

首先我們先創造幾個等會會用到的對象

  1. 創造一個數據庫連接對象(Connection對象,代表與數據源進行的唯一會話。)。
  2. 創建編譯語句對象(Statement對象,建立了到特定數據庫的連接之後,就可用該連接發送 SQL 語句。)。
  3. 創建預編譯語句對象(PreparedStatement對象, 實例包含已編譯的 SQL 語句。這就是使語句“準備好”)。
  4. 創建結果集對象(ResultSet對象, 結果集(ResultSet)是數據中查詢結果返回的一種對象,可以說結果集是一個存儲查詢結果的對象,但是結果集並不僅僅具有存儲的功能,他同時還具有操縱數據的功能,可能完成對數據的更新等.)
    ps:結果集對象在oracle中如果是查詢會返回一個resultset,但是當插入,刪除和更新值的時候返回的是被影響的行數,所以這時候需要用int類型來接收這個值。
    // 創建一個數據庫連接
    Connection connection = null;
    // 創建編譯語句對象
    Statement stat =null;
    // 創建預編譯語句對象
    PreparedStatement pstat = null;
    // 創建結果集對象
    ResultSet rs1 = null;
    int rs2 ;

接着我們編寫我們的第一個連接方法,這是整個db數據庫連接類的基礎。

我們需要4個參數:

  1. driverName,這個是你驅動的名稱。
  2. URL,你數據庫的地址,比如我jdbc:oracle:thin:@localhost:1521:stulibrary中,localhost表示在本機,1521表示數據庫的端口號,stulibrary表示數據庫的名稱。
  3. userName,表示你的數據庫登錄名。
  4. pwd,表示登錄名的登錄密碼
    //驅動名稱
    private static final String driverName="oracle.jdbc.driver.OracleDriver";
    //數據庫的地址(通過端口和SID找到對應的數據庫)
    private static final String URL="jdbc:oracle:thin:@localhost:1521:stulibrary";
    //數據庫登錄用戶名
    private static final String userName="ADMIN"; 
    //數據庫登錄密碼
    private static final String pwd="123456";

下面是具體的連接類,定義好變量之後我們的操作將會很簡單。

這個類返回的是connetion對象,這是整個連接類最基礎的對象,所有操作都要圍繞這個對象展開。我們需要傳入剛纔定義的驅動,URL,用戶名和密碼,如果連接成功將會在命令行輸出連接成功。(如果想測試記得寫主類哦,或者在JUNIT內測試也可行,建議後者)

    public Connection getConnection(){
        try {
            //加載oracle驅動
            Class.forName(driverName);
            //通過驅動獲取數據庫的連接
            connection = DriverManager.getConnection(URL,userName,pwd);
            System.out.println("連接成功");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return connection;
    }

下面我們來寫具體的操作的方法

查詢

在查詢方法中要求輸入的sql語句,這個是用String類型定義的數據庫PL/SQL語句。
executeQuery(sql)方法就是用來用sql查詢的。

public ResultSet query(String sql){
        try {
            //通過剛纔的getConnection方法獲得一個連接的對象。
            connection = getConnection();
            //向數據庫中發送你的sql語句
            stat = connection.createStatement();
            //獲得所查詢的結果,返回的是Resultset對象
            rs1 = stat.executeQuery(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs1;
    }

更新

executeUpdate(sql)可以用來插入,刪除和更新值。
其他操作與查詢相同,見查詢註釋

public int update(String sql){
        try {
            connection = getConnection();
            stat = connection.createStatement();
            rs2 = stat.executeUpdate(sql);  
        } 
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return rs2;
    }

替換

替換類中需要sql語句和一個字符串。
prepareStatement時sql語句可以這樣寫
UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?
用問號代替所需要填入的值,然後通過pstat.setString方法再把值賦給它,具體實現是pstat.setString(?的位置),需要替換的字符串值)。
ps:需要注意的是?的位置從第一個開始,不是第0個,比如上條語句需要給第一個?賦值1時就需要這樣寫pstat.setString(1,“1”);

public void update(String sql, String[] args){
        try {
            connection = getConnection();
            pstat = connection.prepareStatement(sql);
            System.out.println(sql);
            System.out.println(args.length);
            for (int i = 0; i < args.length; i++) {
                pstat.setString(i+1, args[i]);
                System.out.println(pstat);
            }

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

刪除

值得注意的是,這裏就是我剛纔所講的,返回的受影響的行數,所以這裏人返回的是int類型的rs2。在之後的編寫中可以通過這個rs2判斷是否刪除成功。

        public int delete(String sql){
            try {
                connection = getConnection();
                stat = connection.createStatement();
                rs2 = stat.executeUpdate(sql);
                return rs2;
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return 0;
        }

最後很重要的一步,關閉數據庫連接,釋放資源

    public void close(){

        try {
            if(rs1!=null) {
                rs1.close();
            }
            if(stat!=null) {
                rs1.close();
            }
            if(pstat!=null) {
                rs1.close();
            }
            if(connection!=null) {
                rs1.close();
            }

        } catch (SQLException e) {
            // TODO: handle exception
        }
    }

至此這個db數據庫連接類就完成了,你可以通過更換中間連接類所講的一些變量來適應你的數據庫,這樣一個萬能的數據庫連接類就完成了。

最後注意

請先保證你的數據庫可正常連接,並且一些驅動及URL地址等信息填寫正確,不然就會出現連接不上的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章