1.JDBC是java聯機數據庫的標準規範,它定義了一組標準類與接口,應用程序須要聯機數據庫時調用這組標準API。html
2.JDBC標準:JDBC應用程序開發者接口和JDBC驅動程序開發者接口。java
3.應用程序使用JDBC聯機數據庫:git
·Connection conn = DriverManager.getConnection(...);
·Statement st = conn.createStatement();
·ResultSet rs = st.executeQuesry(...);
正則表達式
1.要鏈接數據庫系統,必需要有廠商操做的JDBC驅動程序,必須在CLASSPATH中設定驅動程序JAR文檔。sql
2.操做Driver接口的對象是JDBC進行數據庫存取的起點。Connection接口的操做對象是數據庫聯機表明對象,要取得Connection操做對象,能夠經過DriverManager的getConnection():Connection conn = DriverManager.getConnection(jdbcUrl, username, passwd);
3.在操做完數據庫以後,若肯定再也不須要鏈接,必須使用close()關閉與數據庫的鏈接,以釋放鏈接時相關的必要資源,如聯機相關對象、受權資源等。數據庫
1.使用Connection的createStatement()創建Statement對象。數組
2.Statement的execute()用來執行SQL,並能夠測試SQL是執行查詢或更新,返回true表示SQL執行將返回ResultSet做爲查詢結果。架構
1.使用Connection的prepareStatement()方法創建好預先編譯的SQL語句,當中參數會變更的部分先指定「?」這個佔位字符。PrepareStatement stmt = conn.prepareStatement("INSERT INTO t_message VALUES(?, ?, ?, ?)");ide
2.須要真正指定參數執行時,再使用相對應的setInt()、setString()等方法指定「?」處真正應該有的參數。oop
·stmt.setInt(1,2);
·stmt.setString(2,"momor");
·stmt.executeUpdate();
1.當MessageDAO的用戶沒法告知DriverManager有關JDBC URL、用戶名稱、密碼等信息時,可讓MessageDAO依賴於javax.sql.DataSource接口,經過其定義的getConnection()方法取得Connection。
使用ResultSet捲動、更新數據
1.在ResultSet時,默承認以使用next()移動數據光標至下一筆數據,而後使用getxxx()方法來取得數據。
2.ResultSet可使用previous()、first()、last()等方法先後移動數據光標,還能夠調用updatexxx()、updateRow()等方法進行數據修改。
3.結果集類型3種設定:
·ResultSet.TYPE_FORWARD_ONLY(默認)(只能前進數據光標)
·ResultSet.TYPE_SCROLL_INSENSITIVE(先後移動數據光標)
·ResultSet.TYPE_SCROLL_SENSITIVE(先後移動數據光標,反映數據庫中的數據修改)
4.更新設定的2種設定:
·ResultSet.CONCUR_READ_ONLY(默認)(進行數據讀取)
·ResultSet.CONCUR_UPDATABLE(進行數據讀取、更新)
5.數據光標移動的API:
絕對位置移動:absolute()、afterLast()、beforeFirst()、first()、last()。
相對位置移動:relative()、previous()、next()。
判斷目前位置:isAfterLast()、isBeforeFirst()、isFirst()、isLast()。
6.數據修改的條件限制:
必須選取單一表格。
必須選取主鍵。
必須選取全部的NOT FULL的值。
7.數據更新:調用updatexxx()方法,而後調用updateRow()方法。取消更新:調用cancelRowUpdates()。
8.新增數據:先調用moveToInsertRow(),以後調用updatexxx()設定要新增的數據各個字段,而後調用insertRow()新增數據。
9.刪除數據列:調用deleteRow()。
1.每次執行excuteUpdate(),都會向數據庫發送一次SQL。批次更新時可使用addBatch()方法來收集SQL,並使用executeBatch()方法將所收集的SQL傳送出去。
1.要將文檔寫入數據庫,能夠在數據庫表格字段上使用BLOB或CLOB數據類型。
2.BLOB用於存儲大量的二進制數據,像是圖檔、影音檔等。CLOB用於存儲大量的文字數據。
3.java.sql.Blob與java.sql.Clob兩個類分別表明BLOB與CLOB數據。
1.交易的四個基本要求ACID:原子性、一致性、隔離行爲、持續性。
2.更新遺失:某個交易對字段進行更新的消息,因另外一個交易的介入而遺失更新效力。若是要避免此類問題,能夠設定隔離層級爲「可讀取未確認」,能夠經過Connection的setTransactionIsolation()設定爲TRANSACTION_UNCOMMITTED來提示數據庫肯定此隔離行爲。
3.髒讀:讀取到不乾淨、不正確的數據。若是要避免此類問題,能夠設定隔離層級爲「可讀取確認」,能夠經過Connection的setTransactionIsolation()設定爲TRANSACTION_COMMITTED來提示數據庫肯定此隔離行爲。
4.沒法重複的讀取:某個交易兩次讀取同一字段的數據並不一致。若是要避免此類問題,能夠設定隔離層級爲「可重複讀取」,能夠經過Connection的setTransactionIsolation()設定爲TRANSACTION_REPEATABLE_READ來提示數據庫肯定此隔離行爲。
5.幻讀:同一交易期間讀取到的數據筆數不一致。若是要避免此類問題,能夠設定隔離層級爲「可循序」,能夠經過Connection的setTransactionIsolation()設定爲TRANSACTION_SERIALIZABLE來提示數據庫肯定此隔離行爲。
1.Metadata即詮讀數據的數據。
2.能夠經過Connection的getMetaD()方法取得DatabaseMetadata對象,經過這個對象提供的各類方法能夠取得數據庫總體信息,而ResultSet表示查詢到的數據,而數據自己的字段、類型等信息,能夠經過ResulSet的getMetaData對象,經過這個對象提供的相關方法就能夠取得域名、字段類型等信息。
RowSet簡介
1.javax.sql.RowSet接口用以表明數據的類集合,數據能夠是電子表格數據、XML數據或任何具備列集合概念的數據源。可使用RowSet對列集合進行增刪查改。
2.JdcRowSet是聯機式的RowSet,在操做期間會保持與數據庫的聯機,可視爲取得、操做的行爲封裝。
3.CachedRowSet爲脫機式的RowSet,在查詢並填充完數據後就會斷開與數據源的聯機。
取得Class對象的方式:
1.經過Object的getClass方法
2.經過.class常量取得每一個對象對應的Class對象
3.若是是基本類型,可使用對應的打包類加上.TYPE取得Class對象
枚舉類型能夠定義在類的內部也能夠定義在類的外部。若是定義在類的內部,那麼其訪問控制符能夠是public,protected,private或者默認的控制符。若是定義在類的外部,其訪·問控制符只能是public和默認控制符;
枚舉類型中定義的value值都默認爲public static final的。其值一經定義就不能在被修改了。多個value值之間須要用逗號隔開;
枚舉類型中除了能夠聲明常量以外還能夠聲明方法。可是方法須要在常量以後,而且常量和方法之間要用分號區分;
A .for(int i = 0; i < names.length; i++)
B .for(String name : names)
C .for(int i = 0; i < names.length(); i++)
D .none of these will correctly process each element(以上都不能遍歷)
E .all of these will correctly process each element(以上都能遍歷)
正確答案:c
解析:因爲語法錯誤,選擇c將不會正確處理每一個元素。長度變量不是一種方法,所以在它以後沒有括號。選擇b是使用foreach循環來處理數組的一個例子,選擇a是一個正確的循環。
錯題二:
Which of the following array declarations are invalid? (下面哪一個數組聲明是不合法的)
A .int[] grades = new int[5];
B .int grades[] = new int[5];
C .int[] grades = { 91, 83, 42, 100, 77 };
D .all of the above are valid(以上三個都合法)
E .none of the above are valid(以上三個都不合法)
正確答案: D
解析:
這三個都是有效的數組聲明。選擇b使用備用語法。選擇c使用初始化器列表來初始化數組。
錯題三:
Which of the statements is true about the following code snippet?(對於下面的代碼段,說法正確的是?)
int[] array = new int[25];
array[25] = 2;
A .The integer value 2 will be assigned to the last index in the array.(整數2會賦給數組中最後一個元素)
B .The integer value 25 will be assigned to the second index in the array.(整數25會賦給數組中的第2個索引)
C .The integer value 25 will be assigned to the third value in the array. (整數25會賦給數組中的第3個元素)
D .This code will result in a compile-time error.(代碼會產生編譯時錯誤)
E .This code will result in a run-time error. (代碼會產生運行時錯誤)
正確答案: E
教材學習中的問題和解決過程, 一個問題加1分
代碼調試中的問題和解決過程, 一個問題加1分
基於評分標準,我給本博客打分:XX分。得分狀況以下:xxx
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 120/120 | 1/4 | 16/16 | 開始了JAVA學習的第一步! |
第二週 | 346/466 | 1/5 | 23/36 | 瞭解並學習了Java基礎語法 |
第三週 | 364/830 | 1/6 | 21/57 | 進一步瞭解java設計語句 |
第四周 | 570/1300 | 2/8 | 20/77 | 初步學習了繼承與多態,接口與多態知識。 |
第五週 | 1056/2356 | 1/9 | 23/100 | 瞭解Java的異常處理,學習Collection和Map架構 |
第六週 | 960/3100 | 1/10 | 22/122 | 瞭解串流設計和線程 |
第七週 | 427/3527 | 2/12 | 20/144 | 瞭解Java中的時間,完成第二次實驗 |
第八週 | 900/4400 | 1/13 | 20/164 | 初步瞭解了正則表達式 |
第九周 | 498/4950 | 2/15 | 20/184 | 初步學會使用MySQL |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
計劃學習時間:18小時
實際學習時間:20小時
改進狀況:這周學習任務量比較大,花費的時間比預期要多,但效率比以前要高一些。