Java知識(shí)點(diǎn)總結(jié)數(shù)據(jù)庫篇1-5

一陆盘、JDBC連接數(shù)據(jù)庫步驟(以MYSQL為例)

1奈揍、加載JDBC驅(qū)動(dòng)程序:

通過Class類的forName方法實(shí)現(xiàn),并將驅(qū)動(dòng)地址放進(jìn)去

成功加載后魄眉,會(huì)將Driver類的實(shí)例注冊(cè)到DriverManager類中争占。

2燃逻、提供JDBC連接的URL 、創(chuàng)建數(shù)據(jù)庫的連接

?要連接數(shù)據(jù)庫臂痕,需要向java.sql.DriverManager請(qǐng)求并獲得Connection對(duì)象伯襟,

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

?使用DriverManager的getConnectin()方法傳入指定的欲連接的數(shù)據(jù)庫的路徑握童、數(shù) 據(jù)庫的用戶名和密碼姆怪。

Connection con=DriverManager.getConnection(url , username , password);

&&&:"jdbc:mysql://localhost/test?user=root&password=123&useUnicode=true&characterEncoding=utf-8”;

3、創(chuàng)建一個(gè)Statement

?要執(zhí)行SQL語句澡绩,必須獲得java.sql.Statement實(shí)例

?執(zhí)行靜態(tài)SQL語句稽揭。通常通過Statement實(shí)例實(shí)現(xiàn)。

?執(zhí)行動(dòng)態(tài)SQL語句肥卡。通常通過PreparedStatement實(shí)例實(shí)現(xiàn)溪掀。

String sql = “”;

Statement st = con.createStatement() ;

PreparedStatement pst = con.prepareStatement(sql) ;

4、執(zhí)行SQL語句

Statement接口提供了executeQuery步鉴、executeUpdate揪胃、execute三種方法

executeQuery:執(zhí)行select語句,返回ResultSet結(jié)果集

ResultSet rst = pst.executeQuery();

? executeUpdate:執(zhí)行insert氛琢、update喊递、delete語句

pst.executeUpdate();

5、關(guān)閉JDBC對(duì)象

操作完成以后要把所有使用的JDBC對(duì)象全都關(guān)閉阳似,以釋放JDBC資源骚勘。

二、數(shù)據(jù)庫連接池

數(shù)據(jù)庫連接池的優(yōu)點(diǎn)運(yùn)行原理:

在我們不使用數(shù)據(jù)庫連接池的時(shí)候撮奏,每次訪問數(shù)據(jù)庫都需要?jiǎng)?chuàng)建連接俏讹,

使用完成之后需要釋放關(guān)閉連接,而這樣是很耗費(fèi)資源的挽荡。當(dāng)我們使用

數(shù)據(jù)庫連接池的時(shí)候藐石,在tomcat啟動(dòng)的時(shí)候就創(chuàng)建了指定數(shù)量的連接,

之后當(dāng)我們程序使用的時(shí)候就直接從連接池里面取定拟,而不需要?jiǎng)?chuàng)建,同理,

當(dāng)我們使用完的時(shí)候也不需要關(guān)閉連接青自,而是將連接返回到連接池中株依,供

其他請(qǐng)求繼續(xù)使用。

DBCP:比較穩(wěn)定延窜。

C3P0: 性能比較高恋腕。

三、mysql的數(shù)據(jù)庫導(dǎo)入導(dǎo)出

配置:

首先找到mysql的安裝目錄逆瑞,進(jìn)入bin目錄下復(fù)制路徑

將mysql的bin目錄粘貼在計(jì)算機(jī)環(huán)境變量的path中

授權(quán):

登錄mysql

將某張表的某個(gè)權(quán)限賦給某個(gè)用戶

grant [select,insert,update,delete,create,drop] on [databaseName].[tableName] to [userName]@[userIP] identified by [‘連接口令’]

grant select,insert,update,delete,create,drop on oa_ssh.user to root@[IP] identified by 'root';

將所有庫的所有權(quán)限賦給某個(gè)用戶

grant all privileges on *.* to [userName]@[userIp] identified by [‘連接口令’]

grant all privileges on *.* to root@[IP] identified by ‘root';

將所有庫的所有權(quán)限賦給所有用戶

grant all privileges on *.* to root@'%' identified by ‘root’;

導(dǎo)出本地?cái)?shù)據(jù)庫:

mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 > 磁盤:導(dǎo)出的文件名(加后綴)

遠(yuǎn)程導(dǎo)出數(shù)據(jù)庫:

mysqldump -h IP -u 用戶名 -p 數(shù)據(jù)庫名稱 >導(dǎo)出的文件名(加后綴)

遠(yuǎn)程導(dǎo)出數(shù)據(jù)表:

mysqldump -u root -p -d --add-drop-table 數(shù)據(jù)庫名稱 > 導(dǎo)出文件

名(加后綴)

導(dǎo)入數(shù)據(jù):

mysql -u root -p登錄成功后 ==》 source 磁盤:導(dǎo)入的文件名(加后綴)

四荠藤、jdbc分段批量提交的時(shí)候出現(xiàn)異常怎么處理?

通過Map來解決性能問題。首先在分段批量提交的時(shí)候获高,我們不采用事務(wù)哈肖,這樣就保證了合法的數(shù)據(jù)就自動(dòng)提交,不合法的數(shù)據(jù)就自己自動(dòng)進(jìn)行回滾念秧,為了避免不合法數(shù)據(jù)影響后續(xù)合法數(shù)據(jù)的提交淤井,采用定義業(yè)務(wù)規(guī)則字典表,實(shí)現(xiàn)對(duì)數(shù)據(jù)的驗(yàn)證摊趾,將不合法的數(shù)據(jù)記錄下來币狠,供用戶進(jìn)行后續(xù)處理,而合法的數(shù)據(jù)就全部提交砾层。

五漩绵、jdbc批量處理數(shù)據(jù)

批量處理數(shù)據(jù):(代碼優(yōu)化:提高程序執(zhí)行性能)

降低了java程序代碼(客戶端)和數(shù)據(jù)庫之間的 網(wǎng)絡(luò)通信的次數(shù)。

在jdbc中進(jìn)行批量插入的核心API為 addBatch,executeBatch

大數(shù)據(jù)量的插入問題:(jdbc,hibernate,ibatis)

1.每次只插入一條和數(shù)據(jù)庫交互多次(很耗時(shí)間)

2.批量插入和數(shù)據(jù)庫只交互一次(內(nèi)存溢出)

3.分段批量插入(推薦)

jdbc批量處理數(shù)據(jù)是通過PreparedStatement對(duì)象的 addbatch(), executebatch() clearbatch()進(jìn)行和數(shù)據(jù)庫的交互肛炮。通常我們使用分段批量處理的方式 這樣可以提高程序的性能 止吐,防止內(nèi)存溢出。

1.每個(gè)sql語句都和數(shù)據(jù)庫交互一次(非批量操作)

2.只和數(shù)據(jù)庫交互一次(批量操作)(內(nèi)存溢出)

當(dāng)數(shù)據(jù)達(dá)到一定額度的時(shí)候就和數(shù)據(jù)庫進(jìn)行交互铸董,分多次進(jìn)行(分段批量操作)

(500或者1000)

pst.addBatch();

if (i > 0 && i%1000 == 0) {

pst.executeBatch();

pst.clearBatch();

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祟印,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子粟害,更是在濱河造成了極大的恐慌蕴忆,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悲幅,死亡現(xiàn)場離奇詭異套鹅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)汰具,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門卓鹿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人留荔,你說我怎么就攤上這事吟孙。” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵杰妓,是天一觀的道長藻治。 經(jīng)常有香客問我,道長巷挥,這世上最難降的妖魔是什么桩卵? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮倍宾,結(jié)果婚禮上雏节,老公的妹妹穿的比我還像新娘。我一直安慰自己高职,他們只是感情好钩乍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著初厚,像睡著了一般件蚕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上产禾,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天排作,我揣著相機(jī)與錄音,去河邊找鬼亚情。 笑死妄痪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楞件。 我是一名探鬼主播衫生,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼土浸!你這毒婦竟也來了罪针?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤黄伊,失蹤者是張志新(化名)和其女友劉穎泪酱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體还最,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墓阀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拓轻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斯撮。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扶叉,靈堂內(nèi)的尸體忽然破棺而出勿锅,到底是詐尸還是另有隱情帕膜,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布粱甫,位于F島的核電站泳叠,受9級(jí)特大地震影響作瞄,放射性物質(zhì)發(fā)生泄漏茶宵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一宗挥、第九天 我趴在偏房一處隱蔽的房頂上張望乌庶。 院中可真熱鬧,春花似錦契耿、人聲如沸瞒大。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽透敌。三九已至,卻和暖如春踢械,著一層夾襖步出監(jiān)牢的瞬間酗电,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工内列, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撵术,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓话瞧,卻偏偏與公主長得像嫩与,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子交排,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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