連接數(shù)據(jù)庫其他操作

上次提到過可以通過參數(shù)的方式將要連接的數(shù)據(jù)庫url径簿、用戶名及密碼等通過參數(shù)的方式傳給連接函數(shù)自娩,下面給出具體測(cè)試代碼

package Datacon;

import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;

public class Dataconn {
    public String driver="com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://127.0.0.1:3306/test";
    private String user ="root";
    private String passwd = "root@2017";
    
    //聲明默認(rèn)連接函數(shù)
    public Connection  defDataConn() throws ClassNotFoundException, SQLException{
        
        Connection connDB = null;  //初始化返回null
        //加載驅(qū)動(dòng)類
        try{
        Class.forName(driver);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("未找到指定類");
        }
        try{
        connDB = (Connection) DriverManager.getConnection(url, user, passwd);
        }catch(SQLException
                e){
            e.printStackTrace();
            System.out.println("數(shù)據(jù)庫連接失敗");
        }
        return connDB;
        
    }
    public Connection setConnDB(){
        Connection connDB = null;
        try{
            Class.forName(driver);
            }catch(ClassNotFoundException e){
                e.printStackTrace();
                System.out.println("未找到指定類");
            }
            try{
            connDB = (Connection) DriverManager.getConnection(url, user, passwd);
            }catch(SQLException
                    e){
                e.printStackTrace();
                System.out.println("數(shù)據(jù)庫連接失敗");
            }
            System.out.println("===================================================");
            System.out.println("=====================自定義函數(shù)========================");
            System.out.println("===================================================");
            return connDB;
        
    }
    public Dataconn(String driver, String url, String user, String passwd) {
        super();
        this.driver = driver;
        this.url = url;
        this.user = user;
        this.passwd = passwd;
    }

}

除以上方法連接數(shù)據(jù)庫jdbc還提供通過讀取配置文件的方式連接數(shù)據(jù)庫,讀取配置文件通過Properties類繼承自Hashtable類并且實(shí)現(xiàn)了Map接口较店,使用鍵值對(duì)的形式來保存屬性集柿顶。需要注意的是配置文件的存放位置為class path目錄。

properties配置文件

新建配置文件唯蝶,通過右擊src文件夾選擇new-other,選擇file類型

選擇file類型

輸入文件名及擴(kuò)展名點(diǎn)擊保存即可遗嗽。
點(diǎn)擊add添加對(duì)應(yīng)配置文件信息粘我。
添加完成點(diǎn)擊保存即可

輸入內(nèi)容

通過Properties類實(shí)例化,通過x.load()方式導(dǎo)入文件內(nèi)容。如下:

prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));
讀取配置文件詳細(xì)代碼如下:

package Datacon;

import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.Connection;

public class Dataconn {
    public String driver="com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://127.0.0.1:3306/test";
    private String user ="root";
    private String passwd = "root@2017";
    
    public Dataconn(){
        
    }
    //聲明默認(rèn)連接函數(shù)
    public Connection  defDataConn() throws ClassNotFoundException, SQLException{
        
        Connection connDB = null;  //初始化返回null
        //加載驅(qū)動(dòng)類
        try{
        Class.forName(driver);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("未找到指定類");
        }
        try{
        connDB = (Connection) DriverManager.getConnection(url, user, passwd);
        }catch(SQLException
                e){
            e.printStackTrace();
            System.out.println("數(shù)據(jù)庫連接失敗");
        }
        return connDB;
        
    }
    public Connection setConnDB(){
        Connection connDB = null;
        try{
            Class.forName(driver);
            }catch(ClassNotFoundException e){
                e.printStackTrace();
                System.out.println("未找到指定類");
            }
            try{
            connDB = (Connection) DriverManager.getConnection(url, user, passwd);
            }catch(SQLException
                    e){
                e.printStackTrace();
                System.out.println("數(shù)據(jù)庫連接失敗");
            }
            System.out.println("===================================================");
            System.out.println("=====================自定義函數(shù)========================");
            System.out.println("===================================================");
            return connDB;
        
    }
    public Dataconn(String driver, String url, String user, String passwd) {
        super();
        this.driver = driver;
        this.url = url;
        this.user = user;
        this.passwd = passwd;
    }
    public Connection openFileconn() throws IOException, ClassNotFoundException, SQLException{
        Connection dataConn = null;
        
        Properties prop = new Properties();
        try{
            prop.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties"));  //讀入配置文件 
            this.driver=prop.getProperty("driver"); //獲取配置文件中相應(yīng)鍵值
            this.url = prop.getProperty("url");
            this.user = prop.getProperty("user");
            this.passwd = prop.getProperty("password");
        }catch(IOException e){
            e.printStackTrace();
        }
        System.out.println("config file :"+this.driver+this.url+this.user+this.passwd);
        try{
            Class.forName(driver);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
            System.out.println("為找到該java驅(qū)動(dòng)");
        }
        try{
        dataConn = (Connection) DriverManager.getConnection(url, user, passwd);
        }catch(SQLException e){
            e.printStackTrace();
            System.out.println("連接失敗");
        }
        return dataConn;
    }

}

方法測(cè)試代碼如下:

package Datacon;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;

import org.junit.Test;

import com.mysql.jdbc.Connection;

public class testRun { 
    
    @Test
    public void runDef() throws ClassNotFoundException, SQLException{
        Dataconn dataconn = new Dataconn();
        System.out.print(dataconn);
        try{
        Connection connDB= dataconn.defDataConn();  //調(diào)用數(shù)據(jù)庫連接函數(shù)
        Statement stat = connDB.createStatement();  //初始化statement對(duì)象連接數(shù)據(jù)庫
        String SQL = "select * from users";
        ResultSet res = stat.executeQuery(SQL);  //查詢指定數(shù)據(jù)
        //遍歷數(shù)據(jù)集合
        while(res.next()){
            String name = res.getNString(2);
            System.out.println("查詢內(nèi)容為:"+name);
        }
        }catch(SQLException e){
            e.printStackTrace();
            System.out.println("連接失敗");
        }
        
    } 
    @Test
    public void runSet(){
        Dataconn dataconn = new Dataconn("com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/test", "root", "root@2017");
        System.out.print(dataconn);
        try{
        Connection connDB= dataconn.setConnDB();  //調(diào)用數(shù)據(jù)庫連接函數(shù)
        Statement stat = connDB.createStatement();  //初始化statement對(duì)象連接數(shù)據(jù)庫
        String SQL = "select * from users";
        ResultSet res = stat.executeQuery(SQL);  //查詢指定數(shù)據(jù)
        //遍歷數(shù)據(jù)集合
        while(res.next()){
            String name = res.getNString(2);
            System.out.println("查詢內(nèi)容為:"+name);
        }
        connDB.close();
        }catch(SQLException e){
            e.printStackTrace();
            System.out.println("連接失敗");
        }
            
    }
    @Test
    public void openFileconn() throws IOException, ClassNotFoundException, SQLException{
        Dataconn dataconn = new Dataconn();
        System.out.print(dataconn);
        try{
        Connection connDB= dataconn.openFileconn();  //調(diào)用數(shù)據(jù)庫連接函數(shù)
        Statement stat = connDB.createStatement();  //初始化statement對(duì)象連接數(shù)據(jù)庫
        String SQL = "select * from users";
        ResultSet res = stat.executeQuery(SQL);  //查詢指定數(shù)據(jù)
        //遍歷數(shù)據(jù)集合
        while(res.next()){
            String name = res.getNString(2);
            System.out.println("查詢內(nèi)容為:"+name);
        }
        }catch(IOException e){
            e.printStackTrace();
            System.out.println("打開文件失敗");
        }
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末征字,一起剝皮案震驚了整個(gè)濱河市都弹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌匙姜,老刑警劉巖畅厢,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異氮昧,居然都是意外死亡框杜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門袖肥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咪辱,“玉大人,你說我怎么就攤上這事椎组∮涂瘢” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵寸癌,是天一觀的道長(zhǎng)专筷。 經(jīng)常有香客問我,道長(zhǎng)蒸苇,這世上最難降的妖魔是什么仁堪? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮填渠,結(jié)果婚禮上弦聂,老公的妹妹穿的比我還像新娘。我一直安慰自己氛什,他們只是感情好莺葫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枪眉,像睡著了一般捺檬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贸铜,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天堡纬,我揣著相機(jī)與錄音,去河邊找鬼蒿秦。 笑死烤镐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棍鳖。 我是一名探鬼主播炮叶,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼碗旅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了镜悉?” 一聲冷哼從身側(cè)響起祟辟,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侣肄,沒想到半個(gè)月后旧困,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稼锅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年吼具,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缰贝。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馍悟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剩晴,到底是詐尸還是另有隱情锣咒,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布赞弥,位于F島的核電站毅整,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绽左。R本人自食惡果不足惜悼嫉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拼窥。 院中可真熱鬧戏蔑,春花似錦、人聲如沸鲁纠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽改含。三九已至情龄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捍壤,已是汗流浹背骤视。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹃觉,地道東北人专酗。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像帜慢,于是被迫代替她去往敵國和親笼裳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子唯卖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理粱玲,服務(wù)發(fā)現(xiàn)躬柬,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,773評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,782評(píng)論 25 707
  • 在中國流傳了幾千年的儒家文化抽减,已不再局限于學(xué)說或理論的范疇允青,而是深深根植于人們的生活方式和風(fēng)俗習(xí)慣以及觀念中,...
    boom_w閱讀 1,005評(píng)論 0 3
  • 跨年夜卵沉,過了今天應(yīng)該夠十年了吧…… 在跨年夜這一天颠锉,十五從微信上刪除了陳先生。之前十五刪除過陳先生好多次史汗,但是每次...
    十五雁歸來閱讀 275評(píng)論 0 0