接觸JDBC

什么是JDBC呵恢?

JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API痒给,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問匿辩,它由一組用Java語言編寫的類和接口組成束凑。JDBC提供了一種基準(zhǔn)杠园,據(jù)此可以構(gòu)建更高級(jí)的工具和接口贮喧,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序筒狠。
簡單地說,JDBC就是用來執(zhí)行SQL語句的一類Java API箱沦,通過JDBC我們可以直接使用Java編程對(duì)關(guān)系數(shù)據(jù)庫進(jìn)行相關(guān)地操作辩恼。

首先,我們得有一個(gè)數(shù)據(jù)庫。

我安裝的MYSQL版本為5.7灶伊,安裝教程可以參考如下的鏈接教程疆前。
http://jingyan.baidu.com/article/7e440953d6f0702fc1e2ef61.html

安裝完成之后,我們打開這里


圖片.png

輸入我們安裝的時(shí)候所設(shè)置的密碼


圖片.png

然后我們輸入下面的命令:show databases;,注意一定要有分號(hào)聘萨!

圖片.png

如此一來就可以知道我們已經(jīng)成功地安裝好了MYSQL啦峡继。

接下來,我們需要導(dǎo)入一個(gè)jar包到Eclipse中匈挖。

使用JDBC需要在工程中導(dǎo)入對(duì)應(yīng)的jar包碾牌。首先我們創(chuàng)建一個(gè)項(xiàng)目,名字為test儡循,接著我們右鍵test項(xiàng)目舶吗,選擇build path,選擇Add external Archives...


圖片.png

然后我們選擇我們需要的jar包择膝,大家可以到官網(wǎng)進(jìn)行下載誓琼。


圖片.png

準(zhǔn)備工作完成之后,我們就可以開始基礎(chǔ)的操作了肴捉。我們首先創(chuàng)建一個(gè)數(shù)據(jù)庫:
1腹侣、create database if not exists jdbc;
2、use jdbc;
3齿穗、

create table if not exists users(
  id int(5),
  name varchar(10),
  sal double(8,2),      
  hire timestamp
);
圖片.png

接下來我們插入數(shù)據(jù):


圖片.png

我們顯示一下我們創(chuàng)建的數(shù)據(jù)庫:
select id, name, sal from users;

圖片.png

接著我們到Eclipse中寫Java類:

package test;

/**
 * SUN公司JDBC規(guī)則
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;

/**
 * JDBC入門傲隶,查詢users表中的所有記錄,并在控制臺(tái)顯示
 */
public class MysqlJdbc {
    public static void main(String[] args) throws Exception{
        //連接MySQL數(shù)據(jù)庫服務(wù)器的字符串
        //jdbc:主協(xié)議窃页,即如果你用jdbc規(guī)則來連接數(shù)據(jù)庫的話跺株,主協(xié)議必定是jdbc
        //mysql:子協(xié)議,即連接的是哪種數(shù)據(jù)庫服務(wù)器脖卖,如果是mysql數(shù)據(jù)庫服務(wù)器的話乒省,必定是mysql
        //127.0.0.1:數(shù)據(jù)庫服務(wù)器是位于哪臺(tái)PC的上,可以用ip表示畦木,也可以用域名表示袖扛,例如:localhost
        //3306:表示MySQL數(shù)據(jù)庫服務(wù)器安裝以PC上的端口號(hào)
        //jdbc:表示需要訪問MySQL數(shù)據(jù)庫服務(wù)器上的哪個(gè)具體的數(shù)據(jù)庫
        //如果你訪問的MySQL數(shù)據(jù)庫服務(wù)器的本機(jī)上的話,且端口號(hào)是3306的話十籍,可以簡寫成:jdbc:mysql:///jdbc
        String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
        //進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的用戶名
        String user = "luj1n";
        //進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的密碼蛆封,項(xiàng)目中密碼不可以明文,必須加密
        String password = "585460";
        //需要執(zhí)行的SQL語句妓雾,建議用大寫字母
        String sql = "SELECT ID,NAME,SAL,HIRE FROM USERS";
        
        //NO1)表面:在classpath中查詢com.mysql.jdbc.Driver這個(gè)字符串對(duì)象的類娶吞,加載到JVM中
        //NO1)深層:向DriverManager注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)
        Class.forName("com.mysql.jdbc.Driver");

        //NO2)獲取與MySQL數(shù)據(jù)庫服務(wù)器的連接
        Connection conn = DriverManager.getConnection(url,user,password);
        
        //NO3)創(chuàng)建封裝SQL語句的對(duì)象
        Statement stmt = conn.createStatement();
        
        //NO4)執(zhí)行SQL語句垒迂,這里我們使用查詢械姻,將結(jié)果封裝到結(jié)果集
        ResultSet rs = stmt.executeQuery(sql);
        
        //NO5)處理結(jié)果集,在默認(rèn)情況下,指針位于結(jié)果集第一行記錄之前/上
        //rs.next()如果指向有記錄的話楷拳,返回true;否則返回false
        while(rs.next()){
            //以行為單位绣夺,獲取每個(gè)字段的值
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double sal = rs.getDouble("sal");
            Timestamp hire = rs.getTimestamp("hire");
            //顯示在控制吧
            System.out.println(id+"\t"+name+"\t"+sal+"\t"+hire);
        }
        
        //NO6)關(guān)閉所用過的連接對(duì)象
        rs.close();
        stmt.close();
        conn.close();
        
        //rs和stat叫輕量級(jí)對(duì)象,即創(chuàng)建和銷毀不耗時(shí)
        //conn叫重量級(jí)對(duì)象欢揖,即創(chuàng)建和銷毀要耗時(shí)
    }
}

我們把項(xiàng)目給運(yùn)行起來:
package test;

/**
 * SUN公司JDBC規(guī)則
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Timestamp;

/**
 * JDBC入門陶耍,查詢users表中的所有記錄,并在控制臺(tái)顯示
 */
public class MysqlJdbc {
    public static void main(String[] args) throws Exception{
        //連接MySQL數(shù)據(jù)庫服務(wù)器的字符串
        //jdbc:主協(xié)議她混,即如果你用jdbc規(guī)則來連接數(shù)據(jù)庫的話烈钞,主協(xié)議必定是jdbc
        //mysql:子協(xié)議,即連接的是哪種數(shù)據(jù)庫服務(wù)器坤按,如果是mysql數(shù)據(jù)庫服務(wù)器的話毯欣,必定是mysql
        //127.0.0.1:數(shù)據(jù)庫服務(wù)器是位于哪臺(tái)PC的上,可以用ip表示臭脓,也可以用域名表示酗钞,例如:localhost
        //3306:表示MySQL數(shù)據(jù)庫服務(wù)器安裝以PC上的端口號(hào)
        //jdbc:表示需要訪問MySQL數(shù)據(jù)庫服務(wù)器上的哪個(gè)具體的數(shù)據(jù)庫
        //如果你訪問的MySQL數(shù)據(jù)庫服務(wù)器的本機(jī)上的話,且端口號(hào)是3306的話来累,可以簡寫成:jdbc:mysql:///jdbc
        String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
        //進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的用戶名
        String user = "luj1n";
        //進(jìn)入MySQL數(shù)據(jù)庫服務(wù)器的密碼砚作,項(xiàng)目中密碼不可以明文,必須加密
        String password = "585460";
        //需要執(zhí)行的SQL語句嘹锁,建議用大寫字母
        String sql = "SELECT ID,NAME,SAL,HIRE FROM USERS";
        
        //NO1)表面:在classpath中查詢com.mysql.jdbc.Driver這個(gè)字符串對(duì)象的類葫录,加載到JVM中
        //NO1)深層:向DriverManager注冊(cè)數(shù)據(jù)庫驅(qū)動(dòng)
        Class.forName("com.mysql.jdbc.Driver");

        //NO2)獲取與MySQL數(shù)據(jù)庫服務(wù)器的連接
        Connection conn = DriverManager.getConnection(url,user,password);
        
        //NO3)創(chuàng)建封裝SQL語句的對(duì)象
        Statement stmt = conn.createStatement();
        
        //NO4)執(zhí)行SQL語句,這里我們使用查詢领猾,將結(jié)果封裝到結(jié)果集
        ResultSet rs = stmt.executeQuery(sql);
        
        //NO5)處理結(jié)果集压昼,在默認(rèn)情況下,指針位于結(jié)果集第一行記錄之前/上
        //rs.next()如果指向有記錄的話瘤运,返回true;否則返回false
        while(rs.next()){
            //以行為單位窍霞,獲取每個(gè)字段的值
            int id = rs.getInt("id");
            String name = rs.getString("name");
            double sal = rs.getDouble("sal");
            Timestamp hire = rs.getTimestamp("hire");
            //顯示在控制吧
            System.out.println(id+"\t"+name+"\t"+sal+"\t"+hire);
        }
        
        //NO6)關(guān)閉所用過的連接對(duì)象
        rs.close();
        stmt.close();
        conn.close();
        
        //rs和stat叫輕量級(jí)對(duì)象,即創(chuàng)建和銷毀不耗時(shí)
        //conn叫重量級(jí)對(duì)象拯坟,即創(chuàng)建和銷毀要耗時(shí)
    }
}

我們把項(xiàng)目給運(yùn)行起來:


圖片.png

這就是最簡單的JDBC的使用方法但金。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市郁季,隨后出現(xiàn)的幾起案子冷溃,更是在濱河造成了極大的恐慌,老刑警劉巖梦裂,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件似枕,死亡現(xiàn)場離奇詭異,居然都是意外死亡年柠,警方通過查閱死者的電腦和手機(jī)凿歼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人答憔,你說我怎么就攤上這事味赃。” “怎么了虐拓?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵心俗,是天一觀的道長。 經(jīng)常有香客問我蓉驹,道長城榛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任态兴,我火速辦了婚禮吠谢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诗茎。我一直安慰自己工坊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布敢订。 她就那樣靜靜地躺著王污,像睡著了一般。 火紅的嫁衣襯著肌膚如雪楚午。 梳的紋絲不亂的頭發(fā)上昭齐,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音矾柜,去河邊找鬼阱驾。 笑死,一個(gè)胖子當(dāng)著我的面吹牛怪蔑,可吹牛的內(nèi)容都是我干的里覆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼缆瓣,長吁一口氣:“原來是場噩夢啊……” “哼喧枷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起弓坞,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤隧甚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后渡冻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戚扳,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年族吻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帽借。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珠增。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宜雀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情握础,我是刑警寧澤辐董,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站禀综,受9級(jí)特大地震影響简烘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜定枷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一孤澎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欠窒,春花似錦覆旭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荐虐,卻和暖如春七兜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背福扬。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工腕铸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铛碑。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓狠裹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親汽烦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酪耳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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