国产TS紫迹丝袜高跟鞋在线,一区二区三区国产自产视频免费,67pao国产人成视频,午国产午夜激无码毛片不卡

愛碼網(wǎng)專注于資源免費(fèi)下載

Mysql數(shù)據(jù)庫與JDBC編程

一.JDBC基礎(chǔ)
1.跨平臺(tái)性。面向接口編程。
2.SUN提供的JDBC可以完成以下三個(gè)基本工作:建立與數(shù)據(jù)庫的連接;執(zhí)行SQL語句;獲得SQL語句的執(zhí)行結(jié)果。
3.數(shù)據(jù)庫驅(qū)動(dòng)程序是JDBC程序和數(shù)據(jù)庫之間的轉(zhuǎn)換層,數(shù)據(jù)庫驅(qū)動(dòng)程序負(fù)責(zé)將JDBC調(diào)用映射成特定的數(shù)據(jù)庫調(diào)用。
二.SQL語法
1.mysql默認(rèn)以分號(hào)作為每條命令的結(jié)束符。
2.InnnoDB提供事務(wù)安全的存儲(chǔ)機(jī)制。InnoDB通過建立行級(jí)鎖來保證事物完整性,并以O(shè)racle風(fēng)格的共享鎖來處理Select語句。
3.語句基礎(chǔ):
DML,數(shù)據(jù)操作語言,insert,update,delete
DDL,數(shù)據(jù)定義語言,create,alter,drop,truncate
DCL,數(shù)據(jù)控制語言,grant,revoke
事務(wù)控制語句:commit,rollback,savepoint
不區(qū)分大小寫。
4.MySQL常見命令:
show databases;
drop database 數(shù)據(jù)庫名;
use 數(shù)據(jù)庫名;
show tables;
desc 表名
5.數(shù)據(jù)庫對(duì)象
對(duì)象名稱
對(duì)應(yīng)關(guān)鍵字
描述
table
表是存儲(chǔ)數(shù)據(jù)的邏輯單元,以行和列的形式存在;列就是字段,行就是記錄。
數(shù)據(jù)字典

就是系統(tǒng)表,存放數(shù)據(jù)庫相關(guān)信息的表。系統(tǒng)表里的數(shù)據(jù)通常由數(shù)據(jù)庫系統(tǒng)維護(hù)。程序員通常不應(yīng)該手動(dòng)修改系統(tǒng)表及內(nèi)部數(shù)據(jù),程序員只可查看系統(tǒng)表的數(shù)據(jù)。
約束
constraint
執(zhí)行數(shù)據(jù)校驗(yàn)的規(guī)則,用于保證了數(shù)據(jù)完整性的規(guī)則。
視圖
view
一個(gè)或者多個(gè)數(shù)據(jù)表里數(shù)據(jù)的邏輯顯示。視圖并不存儲(chǔ)數(shù)據(jù)。
索引
index
用于提高查詢的性能,相當(dāng)于書的目錄。
函數(shù)
function
用于完成一次特定的計(jì)算,具有一個(gè)返回值。
存儲(chǔ)過程
procedure
用于完成一次完整的業(yè)務(wù)處理,沒有返回值,但可通過傳出參數(shù)將多個(gè)值傳給調(diào)用環(huán)境。
觸發(fā)器
trigger
相當(dāng)于一個(gè)事件監(jiān)聽器,當(dāng)數(shù)據(jù)庫發(fā)生特定事件后,觸發(fā)器被觸發(fā),完成響應(yīng)的處理。
6.約束
?大部分?jǐn)?shù)據(jù)庫支持下面五類完整性約束:
–NOT NULL:非空約束,指定某列不能為空。
–UNIQUE:唯一約束,指定某列或者幾列組合不能重復(fù)。
–PRIMARY KEY:主鍵,指定該列的值可以唯一地表示該條記錄。
–FOREIGN KEY:外鍵,指定該行記錄從屬于主表中的一條記錄,主要用于保證參照完整性。
–CHECK:檢查,指定一個(gè)布爾表達(dá)式,用于指定對(duì)應(yīng)列的值必須滿足該表達(dá)式。
7.索引:是存放在模式中的一個(gè)數(shù)據(jù)庫對(duì)象,雖然索引總是從屬于數(shù)據(jù)庫,但它也和數(shù)據(jù)表一樣,屬于數(shù)據(jù)庫對(duì)象,創(chuàng)建索引唯一的作用就是加速對(duì)表的查詢,索引通過使用快速路徑的訪問方法來快速定位數(shù)據(jù),從而減少了磁盤的I/O。
?創(chuàng)建索引有兩種方式:
–自動(dòng):當(dāng)在表上定義主鍵約束、唯一約束和外鍵約束時(shí),系統(tǒng)會(huì)為該數(shù)據(jù)列自動(dòng)創(chuàng)建對(duì)應(yīng)的索引。
–手動(dòng):用戶可以手動(dòng)創(chuàng)建索引來加速查詢。
?刪除索引也有兩種方式:
–自動(dòng):數(shù)據(jù)表被刪除時(shí),該表上的索引自動(dòng)被刪除。
–手動(dòng):用戶可以手動(dòng)刪除指定數(shù)據(jù)表上的指定索引。
8.視圖:視圖看上去非常像一個(gè)數(shù)據(jù)表,但它不是數(shù)據(jù)表,因?yàn)樗⒉荒艽鎯?chǔ)數(shù)據(jù),視圖只是一個(gè)或多個(gè)數(shù)據(jù)表中數(shù)據(jù)的邏輯顯示。
好處:可以限制對(duì)數(shù)據(jù)的訪問;可以使復(fù)雜的查詢變的簡單;提供了數(shù)據(jù)的獨(dú)立性;提供了對(duì)相同數(shù)據(jù)的不同顯示。
9.特殊比較運(yùn)算符
運(yùn)算符
含義
between val1 and val2
大于等于val1,且小于等于val2。
in(list)
等于括號(hào)里多個(gè)值的任意之一。
like
字符串匹配,like后的字符串支持通配符。
is null
要求指定值等于null。
10.子查詢就是指在查詢語句中嵌套另一個(gè)查詢語句,子查詢可以支持多層嵌套。對(duì)于一個(gè)普通查詢語句而言,子查詢可以出現(xiàn)在兩個(gè)位置:
---出現(xiàn)在from語句后當(dāng)成數(shù)據(jù)表,這種用法也被稱為行內(nèi)視圖,因?yàn)樵撟硬樵兊膶?shí)質(zhì)就是一個(gè)臨時(shí)試圖;
---出現(xiàn)在where條件后作為過渡條件的值。
注意點(diǎn):
–子查詢要用括號(hào)括起來。
–子查詢當(dāng)成數(shù)據(jù)表時(shí),可以為該子查詢起別名,尤其是要作為前綴來限定數(shù)據(jù)列時(shí),必須給子查詢起別名。
–子查詢當(dāng)過濾條件時(shí),將子查詢放在比較運(yùn)算符的右邊,這樣可以增強(qiáng)查詢的可讀性。
–子查詢當(dāng)過濾條件時(shí),單行子查詢使用單行運(yùn)算符,多行子查詢使用多行運(yùn)算符。
三.JDBC
1.JDBC常用接口和類
?DriverManager
?Connection
?Statement
?PreparedStatement
?ResultSet
2.JDBC編程步驟:
?(1)加載數(shù)據(jù)庫驅(qū)動(dòng)。
?(2)通過DriverManager獲取數(shù)據(jù)庫連接。
?(3)通過Connection對(duì)象創(chuàng)建Statement對(duì)象。
?(4)使用Statement執(zhí)行SQL語句。所有Statement都有如下三個(gè)方法來執(zhí)行SQL語句。
?(5)操作結(jié)果集。如果執(zhí)行的SQL語句是查詢語句,執(zhí)行結(jié)果將返回一個(gè)ResultSet對(duì)象,該對(duì)象里保存了SQL語句查詢的結(jié)果。程序可以通過操作該ResultSet對(duì)象來取出查詢結(jié)果。
3.JDBC執(zhí)行SQL語句的方式
?使用executeUpdate執(zhí)行DDL和DML語句
?使用execute方法執(zhí)行SQL語句
?使用executeQuery方法執(zhí)行查詢語句
4.PreparedStatement
?JDBC提供了PreparedStatement接口,它是Statement接口的子接口,它可以預(yù)編譯SQL語句,預(yù)編譯后的SQL語句被存儲(chǔ)在PreparedStatement對(duì)象中。然后可以使用該對(duì)象多次高效地執(zhí)行該語句。簡而言之,使用PreparedStatement比使用Statement的效率要高。
?使用PreparedStatement比使用Statement多了如下三個(gè)好處:
–PreparedStatement預(yù)編譯SQL語句,性能更好。
–PreparedStatment無需“拼接”SQL語句,編程更簡單。
–PreparedStatement可以防止SQL注入,安全性更好。
5.CallableStatement
?調(diào)用存儲(chǔ)過程使用CallableStatement,可以通過Connection的prepareCall方法來創(chuàng)建CallableStatement對(duì)象,創(chuàng)建該對(duì)象時(shí)需要傳入調(diào)用存儲(chǔ)過程的SQL語句,調(diào)用存儲(chǔ)過程的SQL語句總是這種格式:{call 過程名(?,?,?...)},其中的問號(hào)作為存儲(chǔ)過程參數(shù)的占位符。
?存儲(chǔ)過程的參數(shù)既有傳入?yún)?shù),也有傳出參數(shù)。所謂傳入?yún)?shù)就是Java程序必須為這些參數(shù)傳入值,那么可以通過CallableStatement的setXxx方法為傳入?yún)?shù)設(shè)置值;所謂傳出參數(shù)就是Java程序可以通過該參數(shù)獲取存儲(chǔ)過程里的值,那么CallableStatement需要調(diào)用registerOutParameter方法來注冊該參數(shù)
6.處理Blob類型數(shù)據(jù)
?所以將Blob數(shù)據(jù)插入數(shù)據(jù)庫需要使用PreparedStatement,該對(duì)象有一個(gè)方法:setBinaryStream(int parameterIndex, InputStream x),該方法可以為指定參數(shù)傳入二進(jìn)制輸入流,從而可以實(shí)現(xiàn)將Blob數(shù)據(jù)保存到數(shù)據(jù)庫的功能。
?當(dāng)我們需要從ResultSet里取出Blob數(shù)據(jù)時(shí),可以調(diào)用ResultSet的getBlob(int columnIndex)方法,該方法將返回一個(gè)Blob對(duì)象,Blob對(duì)象提供了getBinaryStream方法來獲取該Blob數(shù)據(jù)的輸入流,也可使用Blob對(duì)象提供的getBytes方法直接取出該Blob對(duì)象封裝的二進(jìn)制數(shù)據(jù)。
7.使用ResultSetMetaData
?ResultSet里包含一個(gè)getMetaData()方法,該方法返回該ResultSet對(duì)應(yīng)的ResultSetMetaData對(duì)象。一旦獲得了ResultSetMetaData對(duì)象,就可通過ResultSetMetaData提供的大量的方法來返回ResultSet的描述信息,常用的方法有如下三個(gè):
–int getColumnCount():返回該ResultSet的列數(shù)量。
–String getColumnName(int column):返回指定索引的列名。
–int getColumnType(int column):返回指定索引的列類型。
8.事務(wù)
?事務(wù)是由一步或幾步數(shù)據(jù)庫操作序列組成的邏輯執(zhí)行單元,這系列操作要么全部執(zhí)行,要么全部放棄執(zhí)行。程序和事務(wù)是兩個(gè)不同的概念。一般而言:一段程序中可能包含多個(gè)事務(wù)。
?事務(wù)具備四個(gè)特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、和持續(xù)性(Durability)。這四個(gè)特性也簡稱為ACID性。
–原子性(Atomicity)
–一致性(Consistency)
–隔離性(Isolation)
–持續(xù)性(Durability)
9.批量更新
?JDBC還提供了一個(gè)批量更新的功能,使用批量更新時(shí),多條SQL語句將會(huì)被作為一批操作被同時(shí)收集、并同時(shí)提交。
?批量更新必須得到底層數(shù)據(jù)庫的支持,可以通過調(diào)用DatabaseMetaData的supportsBatchUpdates方法來查看底層數(shù)據(jù)庫是否支持批量更新。
?使用批量更新也需要先創(chuàng)建一個(gè)Statement對(duì)象,然后利用該對(duì)象addBatch方法將多條SQL語句同時(shí)收集起來,最后調(diào)用Statement對(duì)象的executeBatch同時(shí)執(zhí)行這些SQL語句。
10.DatabaseMetaData
?JDBC提供了DatabaseMetaData來封裝數(shù)據(jù)庫連接對(duì)應(yīng)數(shù)據(jù)庫的信息,通過Connection提供的getMetaData()方法就可以獲取到數(shù)據(jù)庫對(duì)應(yīng)的DatabaseMetaData對(duì)象。
?許多DatabaseMetaData方法以 ResultSet 對(duì)象的形式返回查詢的信息,使用ResultSet的常規(guī)方法(例如getString 和 getInt)即可從這些ResultSet對(duì)象中獲取數(shù)據(jù)。如果查詢的信息不可用,則將返回一個(gè)空ResultSet對(duì)象。
?很多DatabaseMetaData方法都需要傳入一個(gè)xxxPattern的模式字符串,這里的xxxPattern不是正則表達(dá)式,而是SQL里的模式字符串,即用百分號(hào)(%)代表任意多個(gè)字符,使用下劃線(_)代表一個(gè)字符。通常情況下,如果把該模式字符串參數(shù)值設(shè)置為null,即表明該參數(shù)不作為過濾條件。
11.數(shù)據(jù)庫連接池
?數(shù)據(jù)庫連接池的解決方案是:當(dāng)應(yīng)用程序啟動(dòng)時(shí),系統(tǒng)主動(dòng)建立足夠的數(shù)據(jù)庫連接,并將這些連接組成一個(gè)連接池。每次應(yīng)用程序請求數(shù)據(jù)庫連接時(shí),無需重新打開連接,而是從池中取出已有的連接使用,使用完后,不再關(guān)閉數(shù)據(jù)庫連接,而是直接將該連接歸還給連接池。通過使用連接池,將大大提高程序運(yùn)行效率。
?數(shù)據(jù)庫連接池的常用參數(shù)有如下:
–數(shù)據(jù)庫的初始連接數(shù)。
–連接池的最大連接數(shù)。
–連接池的最小連接數(shù)。
連接池的每次增加的容量
12.兩種常見的開源數(shù)據(jù)源
?DBCP是Apache軟件基金組織下的開源連接池實(shí)現(xiàn),該連接池依賴該組織下的另一個(gè)開源系統(tǒng):common-pool。
?相比之下,C3P0數(shù)據(jù)源性能更勝一籌,Hibernate就推薦使用該連接池。C3P0連接池不僅可自動(dòng)清理不再使用的Connection,還可以自動(dòng)清理Statement和ResultSet。C3P0連接池需要版本為1.3以上的JRE,推薦使用1.4以上的JRE。

本文鏈接:http://fangxuan.com.cn/article/625.html

網(wǎng)友評(píng)論

熱門文章
隨機(jī)文章
熱門標(biāo)簽
側(cè)欄廣告位