2017-12-28 數(shù)據(jù)庫連接-JDBC

JDBC在java.sql包中。

DriverManager類在java.sql包中。

加載驅(qū)動程序使用的是java.lang包中的Class類的forName()方法,加載JDBC驅(qū)動程序。

1.JDBC的介紹

2.JDBC連接數(shù)據(jù)庫

3.數(shù)據(jù)處理

4.綜合實例

?具體怎么安裝的Mysql以及找到所需要的包,以后學(xué)習(xí)看課本或者查資料。

1.JDBC的介紹

(1)在應(yīng)用中,java會連接數(shù)據(jù)庫,以實現(xiàn)一些應(yīng)用軟件設(shè)計。也就是常說的Java做前端,數(shù)據(jù)庫管理系統(tǒng)做后臺的應(yīng)用系統(tǒng)。這樣的好處就是:數(shù)據(jù)庫管理系統(tǒng)可以完成大量數(shù)據(jù)的存儲和處理,Java做前端也可以達到界面友好、一般用戶能較容易與計算機交互的目的。

? ? (2)java連接數(shù)據(jù)庫,java語言是通過JDBC(Java DataBase Connectivity)實現(xiàn)與數(shù)據(jù)庫系統(tǒng)的連接。

JDBC是java數(shù)據(jù)庫連接規(guī)范,是一種可執(zhí)行SQL語句的Java API,由一些Java語言寫的類和接口組成,在java.sql包中。

(3)常用的JDBC:


(3)JDBC可以完成的功能:

? ? ? ?1.與數(shù)據(jù)庫的連接。

(Connettion conn = null;?

try{

? conn = (Connection)DriverManager.getConnection(url ,user,password;);

})

? ? ? ?2.向數(shù)據(jù)庫發(fā)送sql語句。

? ? ? 3.處理數(shù)據(jù)庫返回的結(jié)果。(Resultset ? 一般是在查詢操作中)

[PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);

ResultSet rs = psmt3.executeQuery();

]


(4)JDBC訪問數(shù)據(jù)庫的類型【共3種】(一般是采用第二種(JDBC直接與數(shù)據(jù)庫連接),即Java編寫的驅(qū)動程序直接與數(shù)據(jù)庫連接)



查詢語句(顯示記錄):

(1)select * from st; //查詢表st中的所有元素,即會顯示表st的所有信息

? ? ? ? select * from st where major ?= "computer";//查詢表st中的專業(yè)是計算機的所有元素,即顯示表st中專業(yè)是computer的所有人。

注:這個major 可以改為其他的元素,例如name ,age,看題目要求查詢什么。?

2.與數(shù)據(jù)庫的連接


例如:

String driver = "com.mysql.jdbc.Driver";//JDBC驅(qū)動程序

String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[數(shù)據(jù)庫類型]://[數(shù)據(jù)庫ip地址]:[數(shù)據(jù)庫端口](默認是localhost_3306)/[數(shù)據(jù)庫名](僅僅修改數(shù)據(jù)庫名,其他不變)

String user ="root";

String password ="root";

Connection conn = null;

try {

Class.forName(driver);//2.加載JDBC驅(qū)動程序(此時會出現(xiàn)錯誤,修改錯誤,選擇surround with try/catch)

conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息進行連接(此時還是會有錯誤,修改錯誤,選擇Add Exception to existing catch caluse(選擇SQLException[所有的數(shù)據(jù)庫異常都叫做SQLException]),進行合并異常類型)(目前為止,連接完成)

} catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

3.數(shù)據(jù)處理

Statement

常用PreparedStatement進行格式化成數(shù)據(jù)庫能識別的語句,即處理預(yù)編譯的SQL語句。




關(guān)閉結(jié)果集:rs.close();

關(guān)閉連接:conn.close();

這些是寫在try最后的。



實例:java與數(shù)據(jù)庫的連接,實現(xiàn)基本的增刪改查操作。

操作步驟:

(1)使用Mysql數(shù)據(jù)庫 ?(navicat.exe軟件)

? ? ? ? ?1.先啟動軟件jspStudy,點擊進入-啟動(運行狀態(tài)是Apach,Tomcat,Mysql),(使用完點擊-停止).如下圖所示。


(1)啟動此軟件
(2)進行”啟動”


? ? ? ? 2.啟動navicat.exe,進行連接,然后建立數(shù)據(jù)庫,建立表。

? ? ? ?(1)單擊連接,不寫輸入密碼,不寫連接名 ,就會生成默認的連接名localhost_3306.

? ? ? ? ? 無論使用哪個連接名,都不需要改動代碼的信息。

? ? ? ? ? 也可以新建連接(例如本地數(shù)據(jù))。類似電池的模樣(代表連接),類似一摞硬幣的代表數(shù)據(jù) ? ? ? ? 庫,而綠色的硬幣的數(shù)據(jù)庫代表你當(dāng)前使用的數(shù)據(jù)庫。



(1)啟動軟件(考試時只啟動它)


(2)點擊左上角-連接

? (2)建立數(shù)據(jù)庫

? ? ? 連接名(以localhost_3306為例) -右擊 -新建數(shù)據(jù)庫?


(1)

在“”新建數(shù)據(jù)庫“”彈出框中,輸入數(shù)據(jù)庫名(必須是英文名,可以有數(shù)字,不能是中文),然后選擇好字符集(UTF-8 Unicode)[防止亂碼] (如果忘記了,選擇新建好的數(shù)據(jù)庫-右擊-數(shù)據(jù)庫屬性進行修改),點擊確定。


(2)

點開數(shù)據(jù)庫student1,下面有個“”表”-右擊-新建表,在彈出框中,設(shè)置好數(shù)據(jù)。


(1)

首先設(shè)置主鍵,如下圖所示,名id,類型int,左下角打鉤自動遞增,在那欄前面右擊-選擇主鍵,然后會“*”變成跟大寫I似的,且最后有個鑰匙,則設(shè)置主鍵成功。如下圖所示。


(2)

然后進行設(shè)置其他表中的元素(抽象設(shè)置),選擇上面菜單欄的“添加欄位”(此時欄位在下方)【如果選擇插入欄位,則是往上插,可以通過菜單欄的“下移”調(diào)下來】,并且進行數(shù)據(jù)設(shè)置。

注:名name ,類型text (注意無string);

? ? ? ?名age,類型int.

點擊保存,輸入表名st,點擊確定,建表成功。

如下圖所示。


(3)

如果再進行表的其他元素插入與設(shè)置,表st右擊-設(shè)計表,進行元素插入設(shè)置。如下圖。


(1)


(2)

最后,進行寫入表中元素的具體數(shù)據(jù)(例如:名:張三 ,年齡:12),表st雙擊打開,就可以填入數(shù)據(jù),填完選擇最下面的對號,繼續(xù)填入數(shù)據(jù)就是最下面選擇“插入記錄(此時是往上插,)”,填完數(shù)據(jù),點擊對號,選擇最下面的“刷新”,就會降下來。


(3)

(2).在eclipse下進行編碼,實現(xiàn)兩者互動。

package JDBC;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import com.mysql.jdbc.Connection;

import com.mysql.jdbc.PreparedStatement;

/*1.新建主類,程序都寫在主類里

*2.導(dǎo)包(mysql-connector-java-5.1.45-bin.jar)(考試時包會在桌面上) 怎么找到的這個包?(后續(xù)學(xué)習(xí))

*在自己所在的項目project(不是包中,是最外面的地方)中右擊-Properties(屬性)-java Build path-右邊選擇Add External jars(添加擴展包)


在左邊有個Referenced Libraries下就會有導(dǎo)入的包,則表示

*則在中間編輯區(qū)會顯示這個包。

* 3.編輯程序

*? (1)設(shè)置好數(shù)據(jù)庫的基本信息,再進行連接

*? (2)進行操作:增加(插入),刪除,修改,[這三個都是執(zhí)行更新[executeUpdate()]]查詢(注意返回一個結(jié)果集Resultset 進行executeQuery());

*? (3)在執(zhí)行時,執(zhí)行一個,其他的就注銷執(zhí)行那條語句,查詢操作放在最后,就可以顯示出前面的執(zhí)行操作做好的結(jié)果了? ?

*/

//此處只執(zhí)行了插入操作和查詢操作,其他的注銷了。

public class Test1 {

public static void main(String[] args) {

/*

* 1.設(shè)置要連接的數(shù)據(jù)庫的基本信息

* (1.先設(shè)置好基本信息driver? url(注意好localhost:3306這之間需要緊密相連,無空格,且是英文下的) user password 定義這四個變量,填好與數(shù)據(jù)庫有關(guān)的信息)

* (2.連接Connection conn = null;)

*/

//1.設(shè)置基本信息

String driver = "com.mysql.jdbc.Driver";//JDBC驅(qū)動程序

String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[數(shù)據(jù)庫類型]://[數(shù)據(jù)庫ip地址]:[數(shù)據(jù)庫端口](默認是localhost_3306)/[數(shù)據(jù)庫名](僅僅修改數(shù)據(jù)庫名,其他不變)

String user ="root";

String password ="root";

Connection conn = null;

try {

//2.加載JDBC驅(qū)動程序(此時會出現(xiàn)錯誤,修改錯誤,選擇surround with try/catch)

Class.forName(driver);

conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息進行連接(此時還是會有錯誤,修改錯誤,選擇Add Exception to existing catch caluse(選擇SQLException[所有的數(shù)據(jù)庫異常都叫做SQLException]),進行合并異常類型)(目前為止,連接完成)

/*2.執(zhí)行操作

* /

*/

//插入操作

//如果插入多條信息,直接插入,和這個一樣。

String sql ="insert into st(name,age) values(?,?)";//sql插入語句

PreparedStatement psmt = (PreparedStatement) conn.prepareStatement(sql); //轉(zhuǎn)換成數(shù)據(jù)庫能識別的語句(2個大寫的PreparedStatement,1個小寫的)

psmt.setString(1, "王五");

psmt.setString(1, "李六");

psmt.setInt(2, 34);

psmt.setInt(2, 44);

psmt.executeUpdate();


//刪除操作

sql =? "delete from st where name = ?";

PreparedStatement psmt1 = (PreparedStatement) conn.prepareStatement(sql);

psmt1.setString(1, "張三");//對應(yīng)sql定義語句的位置從1開始

? ? //psmt1.executeUpdate();

//修改操作

sql = "update st set age =? where name = ?";

PreparedStatement psmt2 = (PreparedStatement) conn.prepareStatement(sql);

psmt2.setInt(1, 34);

psmt2.setString(2, "李四");

//psmt2.executeUpdate();//別忘記更新信息執(zhí)行

//查詢操作

sql = "select * from st";

PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);

ResultSet rs = psmt3.executeQuery(); //執(zhí)行查詢會返回一個結(jié)果集[這個是與其他操作的區(qū)別]

while(rs.next()){

System.out.println("姓名:"+rs.getString(2));//數(shù)據(jù)庫中從1開始

System.out.println("年齡:"+rs.getInt(3));

}

} catch (ClassNotFoundException | SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

結(jié)果如下圖:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,967評論 2 374

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

  • JDBC簡介 SUN公司為了簡化、統(tǒng)一對數(shù)據(jù)庫的操作,定義了一套Java操作數(shù)據(jù)庫的規(guī)范,稱之為JDBC。JDBC...
    奮斗的老王閱讀 1,530評論 0 51
  • 本人的環(huán)境為Myeclipse10、MySQL5.7.15 本文包括:簡介JDBC編程步驟打通數(shù)據(jù)庫程序詳解—Dr...
    廖少少閱讀 3,966評論 7 39
  • 生活中我們常常會碰到這樣一種人,對于不太熟的朋友或者同事的請求,不管自己愿意不愿意,都會統(tǒng)統(tǒng)應(yīng)允。但私...
    小瑞Stephanie閱讀 357評論 0 2
  • 目錄 聲明:百科詞條人人可編輯,創(chuàng)建和修改均免費詳情 2圖 中國足球 多義項 國家足球運動更多義項 足球運動,最早...
    797bd44fe18a閱讀 169評論 0 0
  • 春香倦懶,柳飛鶯啼。賈寶玉抱著一大沓紅封軟皮獎狀,踏著輕快的步伐穿梭在省大里,這媚好的春光透著云層嬌羞地朝大地一展...
    輕飏zyy閱讀 3,282評論 16 16