java用JDBC連接數(shù)據(jù)庫

?創(chuàng)建一個以JDBC連接數(shù)據(jù)庫的程序挣输,包含

7

個步驟: ??


1

纬凤、加載JDBC驅(qū)動程序: ??

????在連接數(shù)據(jù)庫之前,首先要加載想要連接的數(shù)據(jù)庫的驅(qū)動到JVM(Java虛擬機)撩嚼, ??

????這通過java.lang.Class類的靜態(tài)方法forName(String??className)實現(xiàn)停士。 ??

????例如: ??


try

{ ??


//加載MySql的驅(qū)動類?


????Class.forName(

"com.mysql.jdbc.Driver"

)?; ??

????}

catch

(ClassNotFoundException?e){ ??

????System.out.println(

"找不到驅(qū)動程序類?,加載驅(qū)動失斖昀觥恋技!"

); ??

????e.printStackTrace()?; ??

????} ??

???成功加載后,會將Driver類的實例注冊到DriverManager類中逻族。 ??


2

蜻底、提供JDBC連接的URL ??

????連接URL定義了連接數(shù)據(jù)庫時的協(xié)議、子協(xié)議聘鳞、數(shù)據(jù)源標識薄辅。 ??

?????書寫形式:協(xié)議:子協(xié)議:數(shù)據(jù)源標識 ??

????協(xié)議:在JDBC中總是以jdbc開始 ??

????子協(xié)議:是橋連接的驅(qū)動程序或是數(shù)據(jù)庫管理系統(tǒng)名稱。 ??

????數(shù)據(jù)源標識:標記找到數(shù)據(jù)庫來源的地址與連接端口抠璃。 ??

????例如:(MySql的連接URL) ??

????jdbc:mysql: ??


//localhost:3306/test?useUnicode=true&characterEncoding=gbk?;?


???useUnicode=

true

:表示使用Unicode字符集站楚。如果characterEncoding設置為 ??

???gb2312或GBK,本參數(shù)必須設置為

true

?搏嗡。characterEncoding=gbk:字符編碼方式源请。 ??


3

、創(chuàng)建數(shù)據(jù)庫的連接 ??

?????要連接數(shù)據(jù)庫彻况,需要向java.sql.DriverManager請求并獲得Connection對象谁尸, ??

?????該對象就代表一個數(shù)據(jù)庫的連接。 ??

?????使用DriverManager的getConnectin(String?url?,?String?username?,? ??

????String?password?)方法傳入指定的欲連接的數(shù)據(jù)庫的路徑纽甘、數(shù)據(jù)庫的用戶名和 ??

?????密碼來獲得良蛮。 ??

?????例如: ??


//連接MySql數(shù)據(jù)庫,用戶名和密碼都是root?


?????String?url?=?

"jdbc:mysql://localhost:3306/test"

?;? ??

?????String?username?=?

"root"

?; ??

?????String?password?=?

"root"

?; ??


try

{ ??

????Connection?con?=? ??

?????????????DriverManager.getConnection(url?,?username?,?password?)?; ??

?????}

catch

(SQLException?se){ ??

????System.out.println(

"數(shù)據(jù)庫連接失敽酚决瞳!"

); ??

????se.printStackTrace()?; ??

?????} ??


4

货徙、創(chuàng)建一個Statement ??

?????要執(zhí)行SQL語句,必須獲得java.sql.Statement實例皮胡,Statement實例分為以下

3


?????種類型: ??


1

痴颊、執(zhí)行靜態(tài)SQL語句。通常通過Statement實例實現(xiàn)屡贺。 ??


2

蠢棱、執(zhí)行動態(tài)SQL語句。通常通過PreparedStatement實例實現(xiàn)甩栈。 ??


3

泻仙、執(zhí)行數(shù)據(jù)庫存儲過程。通常通過CallableStatement實例實現(xiàn)量没。 ??

????具體的實現(xiàn)方式: ??

????????Statement?stmt?=?con.createStatement()?; ??

???????PreparedStatement?pstmt?=?con.prepareStatement(sql)?; ??

???????CallableStatement?cstmt?=? ??

????????????????????????????con.prepareCall(

"{CALL?demoSp(??,??)}"

)?; ??


5

玉转、執(zhí)行SQL語句 ??

????Statement接口提供了三種執(zhí)行SQL語句的方法:executeQuery?、executeUpdate ??

???和execute ??


1

殴蹄、ResultSet?executeQuery(String?sqlString):執(zhí)行查詢數(shù)據(jù)庫的SQL語句 ??

????????究抓,返回一個結(jié)果集(ResultSet)對象。 ??


2

袭灯、

int

?executeUpdate(String?sqlString):用于執(zhí)行INSERT刺下、UPDATE或 ??

????????DELETE語句以及SQL?DDL語句,如:CREATE?TABLE和DROP?TABLE等 ??


3

妓蛮、execute(sqlString):用于執(zhí)行返回多個結(jié)果集怠李、多個更新計數(shù)或二者組合的 ??

????????語句圾叼。 ??

???具體實現(xiàn)的代碼: ??

??????????ResultSet?rs?=?stmt.executeQuery(

"SELECT?*?FROM?..."

)?; ??


int

?rows?=?stmt.executeUpdate(

"INSERT?INTO?..."

)?; ??


boolean

?flag?=?stmt.execute(String?sql)?; ??


6

蛤克、處理結(jié)果 ??

????兩種情況: ??


1

、執(zhí)行更新返回的是本次操作影響到的記錄數(shù)夷蚊。 ??


2

构挤、執(zhí)行查詢返回的結(jié)果是一個ResultSet對象。 ??

??????ResultSet包含符合SQL語句中條件的所有行惕鼓,并且它通過一套get方法提供了對這些 ??

??????行中數(shù)據(jù)的訪問筋现。 ??

??????使用結(jié)果集(ResultSet)對象的訪問方法獲取數(shù)據(jù): ??


while

(rs.next()){ ??

?????????String?name?=?rs.getString("name")?; ??

????String?pass?=?rs.getString(1)?;?//?此方法比較高效???

?????} ??

????(列是從左到右編號的,并且從列1開始) ??

?7箱歧、關(guān)閉JDBC對象? ??

?????操作完成以后要把所有使用的JDBC對象全都關(guān)閉矾飞,以釋放JDBC資源,關(guān)閉順序和聲 ??

?????明順序相反: ??

?????1呀邢、關(guān)閉記錄集 ??

?????2洒沦、關(guān)閉聲明 ??

?????3、關(guān)閉連接對象 ??


if

(rs?!=?

null

){???//?關(guān)閉記錄集???


try

{ ??

????????????rs.close()?; ??

????????}

catch

(SQLException?e){ ??

????????????e.printStackTrace()?; ??

????????} ??

??????????} ??


if

(stmt?!=?

null

){???//?關(guān)閉聲明???


try

{ ??

  • ????????????stmt.close()?; ??
  • ????????}catch(SQLException?e){ ??
  • ????????????e.printStackTrace()?; ??
  • ????????} ??
  • ??????????} ??
  • ??????????if(conn?!=?null){??//?關(guān)閉連接對象???
  • ?????????try{ ??
  • ????????????conn.close()?; ??
  • ?????????}catch(SQLException?e){ ??
  • ????????????e.printStackTrace()?; ??
  • ?????????} ??
  • ??????????}?
  • 最后編輯于
    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
    • 序言:七十年代末价淌,一起剝皮案震驚了整個濱河市申眼,隨后出現(xiàn)的幾起案子瞒津,更是在濱河造成了極大的恐慌,老刑警劉巖括尸,帶你破解...
      沈念sama閱讀 206,214評論 6 481
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件巷蚪,死亡現(xiàn)場離奇詭異,居然都是意外死亡濒翻,警方通過查閱死者的電腦和手機屁柏,發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 88,307評論 2 382
    • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肴焊,“玉大人前联,你說我怎么就攤上這事∪⒕欤” “怎么了似嗤?”我有些...
      開封第一講書人閱讀 152,543評論 0 341
    • 文/不壞的土叔 我叫張陵,是天一觀的道長届宠。 經(jīng)常有香客問我烁落,道長,這世上最難降的妖魔是什么豌注? 我笑而不...
      開封第一講書人閱讀 55,221評論 1 279
    • 正文 為了忘掉前任伤塌,我火速辦了婚禮,結(jié)果婚禮上轧铁,老公的妹妹穿的比我還像新娘每聪。我一直安慰自己,他們只是感情好齿风,可當我...
      茶點故事閱讀 64,224評論 5 371
    • 文/花漫 我一把揭開白布药薯。 她就那樣靜靜地躺著,像睡著了一般救斑。 火紅的嫁衣襯著肌膚如雪童本。 梳的紋絲不亂的頭發(fā)上,一...
      開封第一講書人閱讀 49,007評論 1 284
    • 那天脸候,我揣著相機與錄音穷娱,去河邊找鬼。 笑死运沦,一個胖子當著我的面吹牛泵额,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播携添,決...
      沈念sama閱讀 38,313評論 3 399
    • 文/蒼蘭香墨 我猛地睜開眼嫁盲,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了薪寓?” 一聲冷哼從身側(cè)響起亡资,我...
      開封第一講書人閱讀 36,956評論 0 259
    • 序言:老撾萬榮一對情侶失蹤澜共,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锥腻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦董,經(jīng)...
      沈念sama閱讀 43,441評論 1 300
    • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點故事閱讀 35,925評論 2 323
    • 正文 我和宋清朗相戀三年瘦黑,在試婚紗的時候發(fā)現(xiàn)自己被綠了京革。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
      茶點故事閱讀 38,018評論 1 333
    • 序言:一個原本活蹦亂跳的男人離奇死亡幸斥,死狀恐怖匹摇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甲葬,我是刑警寧澤廊勃,帶...
      沈念sama閱讀 33,685評論 4 322
    • 正文 年R本政府宣布,位于F島的核電站经窖,受9級特大地震影響坡垫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜画侣,卻給世界環(huán)境...
      茶點故事閱讀 39,234評論 3 307
    • 文/蒙蒙 一冰悠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧配乱,春花似錦溉卓、人聲如沸。這莊子的主人今日做“春日...
      開封第一講書人閱讀 30,240評論 0 19
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至佑钾,卻和暖如春西疤,著一層夾襖步出監(jiān)牢的瞬間烦粒,已是汗流浹背休溶。 一陣腳步聲響...
      開封第一講書人閱讀 31,464評論 1 261
    • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扰她,地道東北人兽掰。 一個月前我還...
      沈念sama閱讀 45,467評論 2 352
    • 正文 我出身青樓,卻偏偏與公主長得像徒役,于是被迫代替她去往敵國和親孽尽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
      茶點故事閱讀 42,762評論 2 345

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

    • JDBC簡介 SUN公司為了簡化忧勿、統(tǒng)一對數(shù)據(jù)庫的操作杉女,定義了一套Java操作數(shù)據(jù)庫的規(guī)范瞻讽,稱之為JDBC。JDBC...
      奮斗的老王閱讀 1,504評論 0 51
    • 本人的環(huán)境為Myeclipse10熏挎、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
      廖少少閱讀 3,927評論 7 39
    • 1. Java基礎部分 基礎部分的順序:基本語法速勇,類相關(guān)的語法,內(nèi)部類的語法坎拐,繼承相關(guān)的語法烦磁,異常的語法,線程的語...
      子非魚_t_閱讀 31,581評論 18 399
    • 一. Java基礎部分.................................................
      wy_sure閱讀 3,790評論 0 11
    • 書 看《當生命化為無息》的時候,能夠全然浸入到作者的憂傷之中积担,這個還是等到寫讀后感的時候在敘述吧陨晶。 任務 這幾天要...
      ca4389e50722閱讀 339評論 0 0