JDBCUtils

抽取JDBCUtils工具類簡化開發(fā)

package utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * JDBCUtils工具類
 * @author me
 *
 */

public class JDBCUtils {
    
    //構(gòu)造方法私有
    private JDBCUtils() {}
    
    /**
     * 注冊驅(qū)動
     */
    public static void loadDriver() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 獲取數(shù)據(jù)庫鏈接對象
     * @return  鏈接對象
     */
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection("jdbc:mysql:///testjdbc", "root", "123");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 釋放資源
     * @param conn數(shù)據(jù)庫鏈接對象
     * @param stat執(zhí)行SQL語句的對象
     * @param rs結(jié)果集對象
     */
    public static void release(Connection conn, Statement stat, ResultSet rs) {
        try {
            if(rs != null) {
                rs.close();
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if(stat != null) {
                    stat.close();
                    stat = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    /**
     * 釋放資源
     * @param conn數(shù)據(jù)庫鏈接對象
     * @param stat執(zhí)行SQL語句的對象
     */
    public static void release(Connection conn, Statement stat) {
        try {
            if(stat != null) {
                stat.close();
                stat = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if(conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

通過JDBCUtils進(jìn)行增刪改查:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

import utils.JDBCUtils;

public class JDBC_Utils_CURD {
    /**
     * 增加
     */
    @Test
    public void method1() {
        JDBCUtils.loadDriver();
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils.getConnection();
            stat = conn.createStatement();
            String sql = "insert into student values(null, 'zhangsan1')";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("添加成功");
                System.out.println(r + "行受到影響");
            } else {
                System.out.println("添加失敗");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(conn, stat);
        }
        
    }
    
    /**
     * 刪除
     */
    @Test
    public void method2() {
        JDBCUtils.loadDriver();
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils.getConnection();
            stat = conn.createStatement();
            String sql = "delete from student where name = 'zhangsan'";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("刪除成功");
                System.out.println(r + "行受到影響");
            } else {
                System.out.println("刪除失敗");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 修改
     */
    @Test
    public void method3() {
        JDBCUtils.loadDriver();
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils.getConnection();
            stat = conn.createStatement();
            String sql = "update student set name = 'zhangsan' where name = 'zhangsan1'";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("修改成功");
                System.out.println(r + "行受到影響");
            } else {
                System.out.println("修改失敗");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(conn, stat);
        }
    }
    
    /**
     * 查詢
     */
    @Test
    public void method4() {
        JDBCUtils.loadDriver();
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            stat = conn.createStatement();
            String sql = "select * from student";
            rs = stat.executeQuery(sql);
            while(rs.next()) {
                System.out.println(rs.getInt("id") + "---" + rs.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(conn, stat, rs);
        }
        
    }
}

讀取配置文件版JDBCUtils2

config.properties:

driverName = com.mysql.jdbc.Driver
#url的格式:jdbc:mysql://ip:port/數(shù)據(jù)庫名
url = jdbc:mysql:///testjdbc
username = root
password = 123
package utils;

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

/**
 * JDBCUtils讀取配置文件版
 * @author me
 */
public class JDBCUtils2 {
    
    private static String driverName;
    private static String url;
    private static String username;
    private static String password;
    
    /**
     * 構(gòu)造函數(shù)私有化
     */
    private JDBCUtils2() {}
    
    /**
     * 讀取配置文件,然后將值賦給成員變量
     */
    public static void readConfig() {
        Properties pp = new Properties();
        try {
            pp.load(new FileInputStream("src/config.properties"));
            driverName = pp.getProperty("driverName");
            url = pp.getProperty("url");
            username = pp.getProperty("username");
            password = pp.getProperty("password");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 注冊驅(qū)動
     */
    static {
        readConfig();
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 獲取鏈接對象
     * @return Connection
     */
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 釋放資源
     * @param conn
     * @param stat
     * @param rs
     */
    public static void release(Connection conn, Statement stat, ResultSet rs) {
        try {
            if(rs != null) {
                rs.close();
                rs = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if(stat != null) {
                    stat.close();
                    stat = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    /**
     * 釋放資源
     * @param conn
     * @param stat
     */
    public static void release(Connection conn, Statement stat) {
        try {
            if(stat != null) {
                stat.close();
                stat = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if(conn != null) {
                    conn.close();
                    conn = null;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
}

使用JDBCUtils2進(jìn)行增刪改查

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

import utils.JDBCUtils2;

/**
 * 使用讀取配置文件的JDBCUtils省去了JDBCUtils.loadDrever();
 * 讀取配置文件的信息放入了靜態(tài)代碼塊中 
 * @author me
 */
public class JDBC_Utils2_CURD {
    /**
     * 增加
     */
    @Test
    public void method1() {
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils2.getConnection();
            stat = conn.createStatement();
            String sql = "insert into student values(null, 'zhangsansan')";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("插入成功");
                System.out.println(r + "條數(shù)據(jù)受到影響");
            } else {
                System.out.println("插入失敗");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils2.release(conn, stat);
        }
    }

    /**
     * 刪除
     */
    @Test
    public void method2() {
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils2.getConnection();
            stat = conn.createStatement();
            String sql = "delete from student where name = 'zhangsansan'";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("刪除成功");
                System.out.println(r + "條數(shù)據(jù)受到影響");
            } else {
                System.out.println("刪除失敗");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils2.release(conn, stat);
        }
    }
    
    /**
     * 修改
     */
    @Test
    public void method3() {
        Connection conn = null;
        Statement stat = null;
        try {
            conn = JDBCUtils2.getConnection();
            stat = conn.createStatement();
            String sql = "update student set name = 'zhangsansan' where name = 'zhangsan'";
            int r = stat.executeUpdate(sql);
            if(r > 0) {
                System.out.println("修改成功");
                System.out.println(r + "條數(shù)據(jù)受到影響");
            } else {
                System.out.println("修改失敗");
            }
                
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils2.release(conn, stat);
        }
    }
    
    /**
     * 查詢
     */
    @Test
    public void method4() {
        
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils2.getConnection();
            stat = conn.createStatement();
            String sql = "select * from student";
            rs = stat.executeQuery(sql);
            while(rs.next()) {
                System.out.println(rs.getInt("id") + "---" + rs.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils2.release(conn, stat, rs);
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末港华,一起剝皮案震驚了整個(gè)濱河市闪水,隨后出現(xiàn)的幾起案子任连,更是在濱河造成了極大的恐慌悠就,老刑警劉巖千绪,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梗脾,居然都是意外死亡荸型,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門炸茧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑞妇,“玉大人,你說我怎么就攤上這事梭冠≡” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵控漠,是天一觀的道長柳琢。 經(jīng)常有香客問我,道長润脸,這世上最難降的妖魔是什么柬脸? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮毙驯,結(jié)果婚禮上倒堕,老公的妹妹穿的比我還像新娘。我一直安慰自己爆价,他們只是感情好垦巴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铭段,像睡著了一般骤宣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上序愚,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天憔披,我揣著相機(jī)與錄音,去河邊找鬼爸吮。 笑死芬膝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的形娇。 我是一名探鬼主播锰霜,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐早!你這毒婦竟也來了癣缅?” 一聲冷哼從身側(cè)響起厨剪,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎友存,沒想到半個(gè)月后祷膳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爬立,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年钾唬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了万哪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侠驯。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奕巍,靈堂內(nèi)的尸體忽然破棺而出吟策,到底是詐尸還是另有隱情,我是刑警寧澤的止,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布檩坚,位于F島的核電站,受9級特大地震影響诅福,放射性物質(zhì)發(fā)生泄漏匾委。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一氓润、第九天 我趴在偏房一處隱蔽的房頂上張望赂乐。 院中可真熱鬧,春花似錦咖气、人聲如沸挨措。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浅役。三九已至,卻和暖如春伶唯,著一層夾襖步出監(jiān)牢的瞬間觉既,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工乳幸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奋救,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓反惕,卻偏偏與公主長得像尝艘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子姿染,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理背亥,服務(wù)發(fā)現(xiàn)秒际,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,094評論 25 707
  • 別人都說“一句姐妹大過天”狡汉,我卻想說“一句TF大過天”娄徊。 他們就是我的天,他們就是我去努力奮斗的動力盾戴。沒有他們的每...
    名字什么的最煩了閱讀 122評論 0 0
  • 說起來很搞笑尖啡,周圍的朋友經(jīng)常用一個(gè)詞來形容我橄仆,那就是清高。 我一直也很疑惑衅斩,我覺得天天和她們一塊盆顾,我也挺...
    漣清泉閱讀 3,428評論 2 2