更新時間:2020-02-05 09:40:01 來源:動力節(jié)點 瀏覽2408次
一、JDBC連接數(shù)據(jù)庫步驟(以MYSQL為例)
1、加載JDBC驅動程序:
通過Class類的forName方法實現(xiàn),并將驅動地址放進去
成功加載后,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL、創(chuàng)建數(shù)據(jù)庫的連接
?要連接數(shù)據(jù)庫,需要向java.sql.DriverManager請求并獲得Connection對象,
該對象就代表一個數(shù)據(jù)庫的連接。
?使用DriverManager的getConnectin()方法傳入指定的欲連接的數(shù)據(jù)庫的路徑、數(shù)據(jù)庫的用戶名和密碼。
Connectioncon=DriverManager.getConnection(url,username,password);
&&&:"jdbc:mysql://localhost/test?user=root&password=123&useUnicode=true&characterEncoding=utf-8”;
3、創(chuàng)建一個Statement
?要執(zhí)行SQL語句,必須獲得java.sql.Statement實例
?執(zhí)行靜態(tài)SQL語句。通常通過Statement實例實現(xiàn)。
?執(zhí)行動態(tài)SQL語句。通常通過PreparedStatement實例實現(xiàn)。
Stringsql=“”;
Statementst=con.createStatement();
PreparedStatementpst=con.prepareStatement(sql);
4、執(zhí)行SQL語句
Statement接口提供了executeQuery、executeUpdate、execute三種方法
executeQuery:執(zhí)行select語句,返回ResultSet結果集
ResultSetrst=pst.executeQuery();
?executeUpdate:執(zhí)行insert、update、delete語句
pst.executeUpdate();
5、關閉JDBC對象
操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源。
二、數(shù)據(jù)庫連接池
數(shù)據(jù)庫連接池的優(yōu)點運行原理:在我們不使用數(shù)據(jù)庫連接池的時候,每次訪問數(shù)據(jù)庫都需要創(chuàng)建連接,使用完成之后需要釋放關閉連接,而這樣是很耗費資源的。當我們使用數(shù)據(jù)庫連接池的時候,在tomcat啟動的時候就創(chuàng)建了指定數(shù)量的連接,之后當我們程序使用的時候就直接從連接池里面取,而不需要創(chuàng)建,同理,當我們使用完的時候也不需要關閉連接,而是將連接返回到連接池中,供其他請求繼續(xù)使用。
DBCP:比較穩(wěn)定。
C3P0:性能比較高。
三、mysql的數(shù)據(jù)庫導入導出
配置:
首先找到mysql的安裝目錄,進入bin目錄下復制路徑
將mysql的bin目錄粘貼在計算機環(huán)境變量的path中
授權:
登錄mysql
將某張表的某個權限賦給某個用戶
grant[select,insert,update,delete,create,drop]on[databaseName].[tableName]to[userName]@[userIP]identifiedby[‘連接口令’]
grantselect,insert,update,delete,create,droponoa_ssh.usertoroot@[IP]identifiedby‘root’;
將所有庫的所有權限賦給某個用戶
grantallprivilegeson.to[userName]@[userIp]identifiedby[‘連接口令’]
grantallprivilegeson.toroot@[IP]identifiedby‘root’;
將所有庫的所有權限賦給所有用戶
grantallprivilegeson.toroot@’%’identifiedby‘root’;
導出本地數(shù)據(jù)庫:
mysqldump-u用戶名-p數(shù)據(jù)庫名>磁盤:導出的文件名(加后綴)
遠程導出數(shù)據(jù)庫:
mysqldump-hIP-u用戶名-p數(shù)據(jù)庫名稱>導出的文件名(加后綴)
遠程導出數(shù)據(jù)表:
mysqldump-uroot-p-d--add-drop-table數(shù)據(jù)庫名稱>導出文件
名(加后綴)
導入數(shù)據(jù):
mysql-uroot-p登錄成功后==》source磁盤:導入的文件名(加后綴)
四、jdbc分段批量提交的時候出現(xiàn)異常怎么處理?
通過Map來解決性能問題。首先在分段批量提交的時候,我們不采用事務,這樣就保證了合法的數(shù)據(jù)就自動提交,不合法的數(shù)據(jù)就自己自動進行回滾,為了避免不合法數(shù)據(jù)影響后續(xù)合法數(shù)據(jù)的提交,采用定義業(yè)務規(guī)則字典表,實現(xiàn)對數(shù)據(jù)的驗證,將不合法的數(shù)據(jù)記錄下來,供用戶進行后續(xù)處理,而合法的數(shù)據(jù)就全部提交。
五、jdbc批量處理數(shù)據(jù)
批量處理數(shù)據(jù):(代碼優(yōu)化:提高程序執(zhí)行性能)
降低了java程序代碼(客戶端)和數(shù)據(jù)庫之間的網(wǎng)絡通信的次數(shù)。
在jdbc中進行批量插入的核心API為addBatch,executeBatch
大數(shù)據(jù)量的插入問題:(jdbc,hibernate,ibatis)
1.每次只插入一條和數(shù)據(jù)庫交互多次(很耗時間)
2.批量插入和數(shù)據(jù)庫只交互一次(內(nèi)存溢出)
3.分段批量插入(推薦)
jdbc批量處理數(shù)據(jù)是通過PreparedStatement對象的addbatch(),executebatch()clearbatch()進行和數(shù)據(jù)庫的交互。通常我們使用分段批量處理的方式這樣可以提高程序的性能,防止內(nèi)存溢出。
1.每個sql語句都和數(shù)據(jù)庫交互一次(非批量操作)
2.只和數(shù)據(jù)庫交互一次(批量操作)(內(nèi)存溢出)
當數(shù)據(jù)達到一定額度的時候就和數(shù)據(jù)庫進行交互,分多次進行(分段批量操作)
(500或者1000)
pst.addBatch();
if(i>0&&i%1000==0){
pst.executeBatch();
pst.clearBatch();
}
六、Oracle分頁
select*from(select*from(selects.*,rownumrnfromstudents)wherern<=5)wherern>0
七、Oracle的基本數(shù)據(jù)類型
Oracle的基本數(shù)據(jù)類型(常用):
1、字符型
Char固定長度字符串占2000個字節(jié)
Varchar2可變長度字符串占4000個字節(jié)
Nvarchar2占2000個字符(最多能存2000個字母/中文)
2、大對象型(lob)
Blob:二進制數(shù)據(jù)最大長度4G
Blob用于存一些圖片,視頻,文件。
比如:當我們在進行文件上傳時,我們一般把上傳的文件存在硬盤上,可以不占用數(shù)據(jù)庫,下載時,如果項目遷移時,文件也要跟著遷移。因此我們可以把用blob把它存在數(shù)據(jù)庫中。但這樣也增加了數(shù)據(jù)庫的負擔。
Clob:字符數(shù)據(jù)最大長度4G,可以存大字符串varchar2和nvarchar2都具有一定的局限性,它們長度有限,但數(shù)據(jù)庫中無論用varchar2或nvarchar2類型,還是用clob,在java端都使用String接收。
3、數(shù)值型
Integer整數(shù)類型,小的整數(shù)。
Float浮點數(shù)類型。
Real實數(shù)類型。
Number(p,s)包含小數(shù)位的數(shù)值類型。P表示精度,s表示小數(shù)后的位數(shù)。
Eg:number(10,2)表示小數(shù)點之前可有8位數(shù)字,小數(shù)點后有2位。
4、日期類型
Date日期(日-月-年)DD-MM-YY(HH-MI-SS)
Timestamp跟date比它可以精確到微秒。精確范圍0~9默認為6.
八、id、rowid、rownum的區(qū)別
rowid物理位置的唯一標識。
而id是邏輯上的唯一標識,所以rowid查找速度要快于id,是目前最快的
定位一條記錄的方式
rowid和rownum都是"偽數(shù)列"
所謂“偽數(shù)列”也就是默認隱藏的一個數(shù)列。
rownum用于標記結果集中結果順序的一個字段,
它的特點是按順序標記,而且是連續(xù)的,
換句話說就是只有有rownum=1的記錄,才可能有rownum=2的記錄。
rownum關鍵字只能和<或者<=直接關聯(lián)
如果是>或者=則需要給他起個別名
九、主鍵和唯一索引的區(qū)別?
在創(chuàng)建主鍵的同時會生成對應的唯一索引,主鍵在保證數(shù)據(jù)唯一性的同時不允許為空,而唯一可以有一個為空數(shù)據(jù)項,一個表中只能有一個主鍵,但是一個主鍵可以有多個字段,一個表中可以有多個唯一索引。
十、Preparedstatement和statement的區(qū)別
用Preparedstatement進行開發(fā)。Preparedstatement是預編譯的,而statement不是,在每次執(zhí)行sql語句的增刪改時,如果是一條數(shù)據(jù)兩者沒差距,但如果數(shù)據(jù)量大于1,那么每次執(zhí)行sql語句statement都要重新編譯一次,而Preparedstatement不用,Preparedstatement的運行效率大于statement;從代碼的可維護性和可讀性來說,雖然用Preparedstatement來代替statement會使代碼多出幾行,但這樣的代碼無論從可讀性還是可維護性來說,都比直接使用statement的代碼高很多檔次;最重要的一點,從安全角度來說,使用Preparedstatement可以大大提高程序的安全性,因為Preparedstatement是用‘?’傳參,可以防止sql注入,具有安全性,而statement用的是‘+’字符串拼接,安全性較低。
數(shù)據(jù)庫相關視頻教程
oracle數(shù)據(jù)庫教程:http://m.dabaquan.cn/v22/
數(shù)據(jù)庫plsql教程:http://m.dabaquan.cn/v23/
jdbc數(shù)據(jù)庫教程:http://m.dabaquan.cn/v24/
數(shù)據(jù)庫mysql教程:http://m.dabaquan.cn/v21
Java實戰(zhàn)項目視頻之egov項目視頻教程【免費下載】:http://m.dabaquan.cn/v83/
Java學生成績管理系統(tǒng)視頻教程【免費下載】:http://m.dabaquan.cn/v51/
以上就是動力節(jié)點Java培訓機構小編介紹的“Java數(shù)據(jù)庫技術總結,內(nèi)涵相關免費視頻”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。
相關內(nèi)容
Java編程學習:MySQL數(shù)據(jù)庫的學習路線
Java數(shù)據(jù)庫入門學習,mysql書籍推薦