第11章 JDBC與MySQL數據庫html
MySQL數據庫管理系統
MySQL數據庫管理系統,簡稱MySQL,是世界上最流行的開源數據庫管理系統,其社區版(MySQL Community Edition)是最流行的免費下載的開源數據庫管理系統。
下載安裝後,進行啓動MySQL數據庫服務器,並創建鏈接,創建數據庫,建立表等操做。java
鏈接MySQL數據庫
1.下載JDBC-MySQL數據庫驅動
2.加載JDBC-MySQL數據庫驅動
代碼以下:mysql
try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){}
3.鏈接數據庫git
使用Connection getConnection(java.lang.String)
方法創建鏈接的代碼以下:正則表達式
Connection con; String uri = "jdbc:mysql://192.168.100.1:3306/students?user=r oot&password=&useSSL=true"; try{ con = DriverManager.getConnection(uri); //鏈接代碼 } catch(SQLException e){ System.out.println(e); }
使用
Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
方法創建鏈接的代碼以下:sql
Connection con; String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true"; String user ="root"; String password =""; try{ con = DriverManager.getConnection(uri,user,password); //鏈接代碼 } catch(SQLException e){ System.out.println(e); }
4.注意漢字問題數據庫
查詢操做
具體步驟:
1.獲得SQL查詢語句對象服務器
try{ Statement sql=con.createStatement(); } catch(SQLException e ){}
2.處理查詢結果
注意:
不管字段是何種屬性,總可使用
getString(int columnIndex)或
getString(String columnName)
方法返回字段值的串表示學習
3.關閉鏈接hibernate
順序查詢:
指ResultSet對象一次只能看到一個數據行,使用next()方法移到下一個數據行,next()方法最初的查詢位置,即遊標位置,位於第一行的前面。next()方法向下(向後、數據行號大的方向)移動遊標,移動成功返回true,不然返回false。
控制遊標:
爲了獲得一個可滾動的結果集,需使用下述方法得到一個Statement對象。
Statement stmt = con.createStatement(int type ,int concurrency);
條件與排序查詢:
更新、添加與刪除操做
1.更新
update 表 set 字段 = 新值 where <條件子句>
2.添加
insert into 表(字段列表) values (對應的具體的記錄)
或
insert into 表 values (對應的具體的記錄)
3.刪除
delete from 表名 where <條件子句>
Connection和某個數據庫創建了鏈接對象con,那麼con就能夠調用prepareStatement(String sql)方法對參數sql指定的SQL語句進行預編譯處理,生成該數據庫底層的內部命令,並將該命令封裝在PreparedStatement對象中,那麼該對象調用下列方法均可以使得該底層內部命令被數據庫執行。
Q1:想總結一下hibernate
和jdbc
鏈接數據庫的優劣比較
A1: 主要從內存消耗,運行效率,開發效率三個方面來分析,參考jdbc與hibernate的優缺點比較
Q:在運行Example11_1時,出現瞭如圖所示狀況。
A:在學習夥伴的幫助下,在命令行終端輸入sudo apt-get install mysql-server mysql-client
命令,安裝MySQL,以後問題解決。
Q1:下列關於異常的說法,錯誤的是
A.Java使用throws拋出一個異常,使用throw聲明方法可能拋出異常。
B.執行System.out.println(3/0);語句會報ArithmeticException異常。
C.Java中的錯誤是以對象的方式呈現爲java.lang.Throwable的各類子類實例。
D.方法parseInt()在執行過程當中可能拋出DataFormatException異常。
正解:AD
知識點:
Q2: 若是超出JVM運行能力以外,如「byte[] arr=new
byte[1024 * 1024 *600];」會拋出java.lang.OutOfMemory
Error異常。
A.true
B.false
正解:B
知識點: 對於嚴重的錯誤,經過Error類來描述,而對於非嚴重的問題,則是經過Exception類來進行描述的。
Q3:InputStream類繼承自FileInputStream,能夠以字節爲單位讀取文件。
A.true
B.false
正解:B
知識點:InputStream類是父類,FileInputStream是子類
Q4:下列關於TreeSet
A.public boolean contains(Object o) 若是此 set 包含指定的元素,則返回 true。若是指定對象沒法與該 set 中的當前元素進行比較,或不包含,則返回false。
B.public boolean add(E e)將指定的元素添加到此 set。若是此 set已經包含這樣的元素,則該調用不改變此 set 並返回 false。
C.public boolean addAll(Collection<? extends E> c)將指定 collection 中的全部元素添加到此 set 中。若是此 set 因爲調用而發生更改,則返回 true。
D.public E lower(E e) 返回此 set 中嚴格小於給定元素的最大元素;若是不存在這樣的元素,則返回 null。
正解:BCD
知識點:若是指定對象沒法與該 set 中的當前元素進行比較,則拋出ClassCastException異常。
Q5:下列說法正確的是
A.hasMoreTokens()方法返回語言符號的計數個數。
B.StringTokenizer 方法不區分標識符、數和帶引號的字符串,它們也不識別並跳過註釋。
C.字符串分析器的計數變量的初始值等於字符串中的單詞數目。
D.與split()方法不一樣的是,StringTokenizer對象不使用正則表達式做爲分割標記。
正解:BCD
知識點:計數變量的值大於0,該方法返回true。不然返回false。
本週主要學習了數據庫,在安裝MySQL時出現了一些小波折,不過通過本身查找問題的緣由以及小夥伴的幫助下,問題都迎刃而解了,再次感謝個人學習夥伴們。
~ | 代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 48/48 | 1/1 | 20/20 | |
第二週 | 390/438 | 2/3 | 18/38 | |
第三週 | 886/1304 | 1/4 | 18/56 | |
第四周 | 1105/2409 | 1/5 | 30/86 | |
第五週 | 1229/3196 | 1/6 | 20/106 | |
第六週 | 1147/4343 | 2/8 | 25/131 | |
第七週 | 1862/3668 | 1/9 | 20/151 |