依操做方式將驅動程序分爲四種類型:(1)Type1:JDBC-ODBC Bridge Driver:由Microsoft主導的數據庫鏈接標準,參考ODBC制定而來(2)Type2:Native API Driver:會以原生方式,調用數據庫提供的原生數據庫,JDBC的方法調用會轉換爲原生連接庫,4種類型中最快的驅動程序,使用前必須先在各平臺進行驅動程序的安裝設定(3)Type3:JDBC-Net Driver:將JDBC方法轉換爲特定的網絡協議調用,目的是遠程與數據庫特定的中介服務器或組件,中介服務器或組件再與數據庫進行操做,能夠跨程序,更換數據庫系統只需更換中介組件,彈性好,速度慢(4)Type4:Native Protocol Driver:驅動程序會將JDBC調用轉換爲與數據庫特定的網絡協議,跨程序,彈性沒有Type3好,最多見的驅動器類型html
java.sql.DriverManager
,必須調用其靜態方法registerDriver()
進行註冊java.lang.class
類的forName()
動態加載驅動程序類Class.forName()
(2)自行創建Driver操做接口類的實例(直接撰寫代碼java.sql.Driver driver = new com.mysql.jdbc.Driver()
)(3)啓動JVM時指定jdbc.drivers屬性(執行java命令時java -Djdbc.drivers=com.mysql.jdbc.Driver;XXXDriver YourProgram
)指定多個驅動程序類,用分號間隔(4)設定JAR中/service/java.sql.Driver文檔getConnection()
,例Connectin conn = DriverManager.getConnection(jdbcUrl,username,password);
(JDBC URL定義了鏈接數據庫時的協議:子協議:數據源識別)取得Connection對象後,使用isClosed()
方法測試與數據庫的鏈接是否關閉,再也不須要鏈接必須使用close()
來關閉與數據庫的鏈接,以釋放鏈接時相關的必要資源,可使用嘗試自動關閉資源語法java
java.sql.Statement
,使用Connection的createStatement()
創建Statement對象createStatement()
創建Statement對象executeUpdate()
(在表中插入一筆數據,返回int結果,表示數據變更的筆數)、executeQuery()
(用於SELECT等查詢數據庫的SQL,返回java.sql.ResultSet對象,表明查詢結果,會是一筆一筆的數據)next()
移動至下一筆數據,返回true或false表示是否有下一筆數據,接着可使用getXXX()
取得數據execute()
能夠用來執行SQL,並可測試SQL是執行查詢或更新,返回true表示SQL執行將返回ReaultSet
做爲查詢結果,可使用getResultSet()
取得ResultSet結果,返回false,表示SQL執行會返回更新筆數或沒有結果,能夠用getUpdateCount()
取得更新筆數Statement或ResultSet不使用時,使用close()
關掉,Statement關閉時,所關聯的ResultSet也會自動關閉mysql
executeQuery()
、executeUpdate()
時,若是有些部分是動態的數據,必須用+連字符串接字符串以組成完整的SQL語句java.sql.PrepareStatement
,使用Connection的preparedStatement()
方法創建好預先編譯好的SQL語句,用「?」代替參數中會變更的部分,須要真正指定參數執行時,再使用setInt()
、setString()
等方法指定「?」處應有的參數executeQuery()
或executeUpdate()
方法後,能夠調用clearParameters()
清除設置的參數,以後就能再次使用這個PreparedStatement實例prepareCall()
創建CallableStatement異常以外,同樣是使用setXXX()
設定參數,查詢操做使用executeQuery()
,更新操做使用executeUpdate()
,使用registerOutParameter()
註冊輸出參數PreparedStatement
或CallableStatement
時,注意SQL類型與Java數據類型的對應java.sql.Date
,日期格式是「年、月、日」,表示時間使用java.sql.Time
,時間格式爲「時、分、秒」,java.sql.Timestamp
格式「時、分、秒、微秒」對於TimeStamp實例,可使用toInstant()
方法將之轉爲Instant實例,Instant實例能夠經過TimeStampe的from()
靜態方法將之轉爲TimeStampe實例git
MessageDAO依賴於javax.sql.DataSource接口,能夠經過其自定義的getConnection()
方法取得Connection正則表達式
next()
移動數據光標至下一筆數據,然後使用getXXX()
方法來取得數據createStatement()
或prepareStatement()
方法創建Statement或PreparedStatement實例時,能夠指定結果集類型與並行方式
absolute()
、afterlast()
、beforeFirst()
、first()
、last()
進行絕對位置移動,使用relative()
、previous()
、next()
進行相對位置移動,成功返回true,使用isAfterLast()
、isBeforeFirst()
、isFirst()
、isLast()
判斷目前位置必須選取NOT NULL的值sql
addBatch()
方法來收集SQL,並使用executeBatch()
方法將所收集的SQL傳送出去SQL的執行順序就是addBath()
時的順序數據庫
經過PreparedStatement的setBlob()
來設定Blob對象,讀取數據時,能夠經過ResultSet的getBlob()
取得Blob對象服務器
setAutoCommit()
方法,給它false自變量,提示數據庫開始交易commit()
,提示數據庫確認操做,中間發生錯誤,調用rollback()
,提示數據庫撤銷全部的執行getTransactionIsolation()
取得數據庫目前的隔離行爲設定,經過setTransactionIsolation()
可提示數據庫設定指定的隔離行爲,可設定常數是定義在Connection上
TRANSACTION_NONE
TRANSACTION_UNCOMMITTED
TRANSACTION_COMMITTED
TRANSACTION_REPEATABLE_READ
幻讀,設定隔離層爲「可循序」TRANSACTION_SERIALIZABLE
網絡
JDBC,經過Connection的getMetaData()
方法取得DatabasemetaData對象,經過該對象提供的方法取得數據庫總體信息,Result表示查詢到的數據學習
RowSet定義了列列集合基本行爲,其下有JdbcRowSet(聯機式的)、CachedRowSet(脫機式的)、FilteredRowSet、JoinRowSet與WebRowSet五個標準列操做子接口,定義在javax.sql.rowset
本週代碼調試沒有錯誤
B .DirectoryStream
C .FileStore
D .FileSystem
『考點』:FileSystem的getRootDirectorie方法能夠取出文件系統根目錄信息。對NIO各個方法還不夠熟悉。
正則表達式」(‘|」)(.*?)\1」匹配 「'Hello',"World」」的結果是()
A .不匹配
B .'Hello'
C ."World"
D .'Hello',"World"
解析:反向引用 \1 表明第一個()中的匹配內容。錯題緣由:漏選
正則表達式 r.t 可以匹配字符串()
A .rat
B .rt
C .rut
D .root
正確答案: A C
r.t 表示 r開着,中間爲任意字符接着爲t的三字母字符串
abc? 匹配( )
A .
ab
B .
abc
C .
abcc
D .
abccc
答案:AB
解析: ? 重複0或1次……
教材學習中的問題和解決過程, 一個問題加1分
代碼調試中的問題和解決過程, 一個問題加1分
基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx
本週學習了數據庫及其在Java中對應的操做,開始不是很明白,百度關於SQL的一些知識,就懂了許多
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 0/0 | 2/2 | 20/20 | |
第二週 | 186/186 | 2/4 | 18/38 | |
第三週 | 689/875 | 3/7 | 22/60 | |
第四周 | 242/1117 | 2/9 | 30/90 | |
第五週 | 698/1815 | 2/9 | 30/120 | |
第六週 | 1269/3084 | 2/9 | 30/120 | |
第七週 | 342/3426 | 2/9 | 30/120 | |
第八週 | 398/3824 | 2/9 | 30/120 | |
第九周 | 1198/5022 | 2/9 | 30/120 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:24小時
實際學習時間:24
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)