JDBC

通過(guò) JDBC , Java 程序可以非常方便的操作各種主流數(shù)據(jù)庫(kù),這是 Java 的魅力所在

JDBC 介紹

JDBC 全稱(chēng):Java Database Connectivity,即實(shí)現(xiàn) Java 和數(shù)據(jù)庫(kù)的連接,是一種可以執(zhí)行 SQL 的 Java API
需要知道闻蛀,JDBC 之所以能相同的 API 操作不同的數(shù)據(jù)庫(kù),是因?yàn)?API 只提供了接口,沒(méi)有實(shí)現(xiàn)類(lèi)险耀,實(shí)現(xiàn)類(lèi)由各個(gè)數(shù)據(jù)庫(kù)廠商提供(即驅(qū)動(dòng)程序),這樣程序員使用 JDBC 時(shí)只要面向標(biāo)準(zhǔn)的 JDBC API 編程即可玖喘,不必?fù)?dān)心不同的數(shù)據(jù)庫(kù)會(huì)寫(xiě)不同的程序甩牺。
當(dāng)需要切換數(shù)據(jù)庫(kù)時(shí),更換不同的實(shí)現(xiàn)類(lèi)(即數(shù)據(jù)庫(kù)驅(qū)動(dòng))即可累奈,這是面向接口編程的典型應(yīng)用

JDBC 的基本工作

  1. 與數(shù)據(jù)庫(kù)建立連接
  2. 執(zhí)行 SQL
  3. 獲得 SQL 語(yǔ)句的執(zhí)行結(jié)果

JDBC API

DriverManager 管理不同的驅(qū)動(dòng)
Connection 連接數(shù)據(jù)庫(kù)
Statement(PreparedStatement) 增刪改查
CallableStatement 調(diào)用數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程/存儲(chǔ)函數(shù)
ResultSet 返回結(jié)果集

步驟

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

import com.blog.dao.IUserDao;
import com.blog.entity.User;

public class UserDaoImpl implements IUserDao{

    String driver = "com.mysql.cj.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/blog?useSSL=false&serverTimezone=UTC";
    String name = "root";
    String pass = "root";
    
    public User login(User user) {
        
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet resultSet = null;
        
        User re = new User();
        
        try {
            //加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
            Class.forName(driver);
            //獲取數(shù)據(jù)庫(kù)連接
            con = DriverManager.getConnection(url,name,pass);
            //SQL預(yù)編譯
            String sql = "select uname,unname from user where uname = ? and upass = ?";
            pst = con.prepareStatement(sql);
            pst.setString(1, user.getUname());
            pst.setString(2, user.getUpass());
            resultSet = pst.executeQuery();
            while (resultSet.next()) {
                String name = resultSet.getString("uname");
                String nname = resultSet.getString("unname");
                re.setUname(name);
                re.setUnname(nname);
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)失敗");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("數(shù)據(jù)庫(kù)連接失敗");
        }finally {
            try {
                if (resultSet != null) resultSet.close();
                if (pst != null) pst.close();
                if (con != null) con.close();
            } catch (Exception e2) {
                // TODO: handle exception
                System.out.println("resultSet關(guān)閉失敗");
            }
            
        }
        
        return re;
    }

}

注意 :Java7 改寫(xiě)了 Connection 贬派、PreparedStatement 、ResultSet 接口澎媒,它們的關(guān)閉會(huì)由AutoCloseable 接口實(shí)現(xiàn)搞乏,因此可以交由 try 語(yǔ)句來(lái)關(guān)閉

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市戒努,隨后出現(xiàn)的幾起案子查描,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冬三,死亡現(xiàn)場(chǎng)離奇詭異匀油,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)勾笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)敌蚜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人窝爪,你說(shuō)我怎么就攤上這事弛车。” “怎么了蒲每?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵纷跛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我邀杏,道長(zhǎng)贫奠,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任望蜡,我火速辦了婚禮唤崭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脖律。我一直安慰自己谢肾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布小泉。 她就那樣靜靜地躺著芦疏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪微姊。 梳的紋絲不亂的頭發(fā)上酸茴,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音柒桑,去河邊找鬼弊决。 笑死噪舀,一個(gè)胖子當(dāng)著我的面吹牛魁淳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播与倡,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼界逛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了纺座?” 一聲冷哼從身側(cè)響起息拜,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后少欺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喳瓣,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年赞别,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畏陕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仿滔,死狀恐怖惠毁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崎页,我是刑警寧澤鞠绰,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站飒焦,受9級(jí)特大地震影響蜈膨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荒给,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一丈挟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧志电,春花似錦曙咽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至鱼蝉,卻和暖如春洒嗤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背魁亦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工渔隶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洁奈。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓间唉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親利术。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呈野,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • JDBC基礎(chǔ)知識(shí) 一、采用JDBC訪問(wèn)數(shù)據(jù)庫(kù)的基本步驟: A.載入JDBC驅(qū)動(dòng)程序 B.定義連接URL ...
    java日記閱讀 3,844評(píng)論 0 20
  • 本文主要內(nèi)容 1印叁、JDBC 2被冒、DBUtils 01JDBC概念和數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 A: JDBC概念和數(shù)據(jù)庫(kù)驅(qū)動(dòng)程...
    勝浩_ae28閱讀 396評(píng)論 0 0
  • 一军掂、數(shù)據(jù)持久化 持久化(persistence):把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中以供之后使用。大多數(shù)情況下昨悼,特別是...
    leeqico閱讀 735評(píng)論 0 3
  • 冬 銀杏 小女孩 就在這里 風(fēng)多了一些 血紅般的楓葉 那是又一季輪回 美好回憶只藏心底 卻不能像這風(fēng)像這葉 在同一...
    陳緒思閱讀 254評(píng)論 0 0
  • 今日溫度剛好蝗锥,下了兩次小雨。 下午去體測(cè)了率触,跑完800米覺(jué)得呼吸急促玛追,不知道是習(xí)慣晚上跑的原因,還是一整天拉肚子的...
    Rinky_e80c閱讀 109評(píng)論 0 0