《Java Web開發實戰》Java工程師推薦的進階之路
《Java Web開發實戰》一書更加趨於實戰性。此教材由淺入深、循序漸進,在語法闡述時儘量避免術語和公式,使初學者能夠快速入門,全面掌握實戰技能。它既可以作為高等院校本、專科計算機相關專業的Java Web入門進階教材,也可作為廣大計算機程式設計愛好的學習參考書。
下面給大家分享點本書的乾貨內容,關於JDBC內容繼續給大家學習,想要完整資料的可以銜接檢視之前的文章。
1.1.1 JDBC程式的開發步驟
編寫一個JDBC程式需要完成六個步驟,具體如下。
l 載入並註冊資料庫驅動(Driver類)
l 獲取資料庫連線(Connection物件)
l 獲取SQL語句執行者(Statement物件)
l 執行SQL語句
l 操作結果集(ResultSet物件)
l 回收資料庫資源
編寫JDBC程式的每個步驟離不開JDBC相關API的支援,接下來,本書將對編寫JDBC程式的具體步驟展開詳細講解。
1.1.2 載入並註冊資料庫驅動
JDBC定義了驅動介面java.sql.Driver,MySql資料庫的驅動包為介面java.sql.Driver提供了實現類com.mysql.jdbc.Driver。在實際開發中,一般採用Class類的forName方法載入驅動類,具體實現程式碼如下。
Class.forName("com.mysql.jdbc.Driver");
類載入時,將執行被載入類的靜態程式碼塊,而com.mysql.jdbc.Driver類有一個靜態程式碼塊如下。
static{
try{
java.sql.DriverManager.registerDriver(newDriver());
}catch(SQLExceptione){
throw new RuntimeException("can't register driver!");
}
}
因此,Driver類在載入過程中即完成了對驅動的註冊。
1.1.3 獲取資料庫連線
DriverManager類是驅動管理類,管理一組JDBC驅動程式,它透過屬性drivers存入很多驅動類。當DriverManager獲取連線的時候,它會把drivers裡的各個驅動的URL和建立連線時傳進來的URL逐一比較,遇到對應的URL,則會嘗試建立連線。透過DriverManager類獲取連線(Connection物件)的具體實現程式碼如下。
Connection conn = DriverManager.getConnection
(String url, String username, String password);
從上述程式碼片段可以看出,DriverManager類的getConnection()方法共有三個引數,它們分別表示資料庫URL、登入資料庫的使用者名稱和密碼,如果三者均匹配成功,就可獲取資料庫連線,為JDBC實現對資料庫的操作奠定基礎。
1.1.4 獲取SQL語句執行者
Connection物件提供了3種獲取SQL語句執行者(Statement物件)的方法,其中,呼叫createStatement()方法獲取Statement物件,呼叫prepareStatement()方法獲取PreparedSatement物件,呼叫prepareCall()方法獲取CallableStatement物件,以獲取Statement物件為例,具體實現程式碼如下。
Statement statement = conn.createStatement();
如果獲取PreparedStatement物件和CallableStatement物件,還需傳入String型別的SQL語句作為引數。
1.1.5 執行SQL語句並操作結果集
Statement物件提供了3種方法執行SQL語句,其中,execute()方法可以執行任何SQL語句;executeUpdate()方法用於執行DDL語句和DML語句,執行DDL語句時,返回值為0,執行DML語句時,返回值為影響的行數;executeQuery()方法用於執行實現查詢功能的SQL語句,返回值是一個結果集(ResultSet物件)。
以executeQuery()方法為例,具體實現程式碼如下。
ResultSet resultSet = statement.executeQuery(sql);
結果集(ResultSet物件)封裝了執行查詢SQL語句後返回的結果,程式可以透過遍歷結果集獲取每一行的資料。ResultSet物件具有指向其當前資料行的指標,在最開始的時候指標被置於第一行之前,可呼叫ResultSet介面的next()方法將指標移動到下一行,實際應用時常將ResultSet介面的next()方法放在while()迴圈當中,如果有下一行返回True,遍歷繼續進行,沒有下一行時返回False,遍歷結束。
從結果集中獲取資料分為兩個步驟,首先呼叫next()、previous()、first()、last()等方法移動指標,其次呼叫getXxx()方法獲取指標指向行的特定列的值。該方法既可以使用列索引作為引數,也可以使用列名稱作為引數。使用列索引作為引數效能更好,使用列名稱作為引數可讀性更好,操作結果集的具體實現程式碼如下。
while (rs.next()) {
Object object = resultSet.getObject(1);
}
其中,引數“1”表示獲取當前指標指向行的第1列的資料,除此之外,getObject()方法的引數名稱也可以是String型別的資料表的列名,此時getObject()方法獲取該列名對應的資料。
1.1.6 回收資料庫資源
為了節省資源,提升效能,包括 Connection、Statement、ResultSet在內的JDBC資源在使用之後要及時關閉。關閉的正確順序是:先得到的後關閉,後得到的先關閉。回收資料庫資源的具體實現程式碼如下。
resultSet.close();
statement.close();
conn.close();
1.1.7 編寫一個JDBC程式
前面的小節講解了編寫JDBC程式的具體步驟,接下來透過一個例項演示JDBC程式的具體實現。
(1)在MySQL中建立資料庫chapter01和資料表student,SQL語句如下所示。
DROP DATABASE IF EXISTS chapter01;
CREATE DATABASE chapter01;
USE chapter01;
CREATE TABLE student(
sid INT PRIMARY KEY AUTO_INCREMENT, #ID
sname VARCHAR(20), #學生姓名
age VARCHAR(20), #學生年齡
course VARCHAR(20) #專業
);
(2)向資料表student新增資料,SQL語句如下所示。
INSERT INTO student(sname,age,course) VALUES ('zhangsan','20','Java');
INSERT INTO student(sname,age,course) VALUES ('lisi','21','Java');
INSERT INTO student(sname,age,course) VALUES ('wangwu','22','Java');
INSERT INTO student(sname,age,course) VALUES ('zhaoliu','22','Python');
INSERT INTO student(sname,age,course) VALUES ('sunqi','22','PHP');
INSERT INTO student(sname,age,course) VALUES ('zhangsansan','22','PHP');
(3)透過SQL語句測試資料是否新增成功,執行結果如下所示。
mysql> SELECT * FROM STUDENT;
+-----+-------------+------+--------+
| sid | sname | age | course |
+-----+-------------+------+--------+
| 1 | zhangsan | 20 | Java |
| 2 | lisi | 21 | Java |
| 3 | wangwu | 22 | Java |
| 4 | zhaoliu | 22 | Python |
| 5 | sunqi | 22 | PHP |
| 6 | zhangsansan | 22 | PHP |
+-----+-------------+------+--------+
6 rows in set (0.00 sec)
從以上執行結果可以看出,資料新增成功。
(4)在Eclipse中新建Java工程chapter01,在工程chapter01下新建目錄lib,將MySQL資料庫的驅動jar包mysql-connector-java-5.1.37-bin.jar複製到lib目錄下,滑鼠右擊lib目錄下的mysql-connector-java-5.1.37-bin.jar,在彈出的選單中選擇Build Path→Add to Build Path,完成jar包的匯入。在工程chapter01的src目錄下新建com.qfedu.jdbc包,在該包下新建類TestJDBC01,具體程式碼如例1-1所示。
【例1-1】 TestJDBC01.java
1 package com.qfedu.jdbc;
2 import java.sql.Connection;
3 import java.sql.DriverManager;
4 import java.sql.ResultSet;
5 import java.sql.Statement;
6 public class TestJDBC01 {
7 public static void main(String[] args) throws Exception {
8 //載入並註冊資料庫驅動
9 Class.forName("com.mysql.jdbc.Driver");
10 String url ="jdbc:mysql://localhost:3306/chapter01";
11 String username="root";
12 String password ="root";
13 //獲取資料庫連線
14 Connection conn
15 =DriverManager.getConnection(url,username,password);
16 Statement statement = conn.createStatement();
17 //獲取執行者物件
18 String sql = "select * from student where sname ='zhangsan' ";
19 //執行SQL語句
20 ResultSet resultSet = statement.executeQuery(sql);
21 System.out.println("sid|sname|age|course");
22 //處理結果集
23 while (resultSet.next()) {
24 int sid = resultSet.getInt("sid");
25 String sname = resultSet.getString("sname");
26 String age = resultSet.getString("age");
27 String course = resultSet.getString("course");
28 System.out.println(sid+"|"+sname+"|"+age+"|"+course);
29 }
30 //關閉資源
31 resultSet.close();
32 statement.close();
33 conn.close();
34 }
35 }
執行TestJDBC01類,具體執行結果如圖1.5所示。
圖1.1 執行結果
從以上執行結果可以看出,程式查詢出資料表student中的資料並輸出到控制檯。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2651381/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資深Java工程師推薦新手乾貨教材 《Java Web開發實戰》Java工程師Web
- Java開發工程師進階篇——深入淺出Java集合框架Java工程師框架
- Java開發工程師進階篇-Java8的Stream流使用技巧Java工程師
- Java開發工程師進階篇-深入淺出RedisJava工程師Redis
- Java工程師核心書單推薦Java工程師
- 前端工程師的進階之路前端工程師
- 高階 Android 工程師的進階之路Android工程師
- Java開發工程師進階篇-必掌握的常用設計模式Java工程師設計模式
- Go+雲原生高階開發工程師進階路線及資料推薦Go工程師
- 史上最全的Java進階書籍推薦Java
- 【良心推薦】揭秘從新手到Vue高階工程師的養成之路Vue工程師
- Java工程師成神之路Java工程師
- Java開發工程師進階篇- 掃盲Java中的各種鎖,你學廢了嗎?Java工程師
- Java常用的開發庫推薦Java
- Java開發工程師索引Java工程師索引
- 進軍測試開發工程師之路~工程師
- Java開發工程師進階篇 - Java中隱藏的一些語法糖,你zao嗎?Java工程師
- 你的Android資深工程師進階之路Android工程師
- 【Java開發工程師面經】Java工程師
- 加入雲原生實戰營(星球),帶你進階 Go + 雲原生高階開發工程師Go工程師
- 雙11來臨,Java後端工程師書單推薦Java後端工程師
- Java進階書籍推薦,趕快收藏起來!Java
- 推薦一份Web 工程師的前端書單Web工程師前端
- 【星課堂】JAVA 工程師的線上診斷神器推薦——ArthasJava工程師
- 高階工程師-Java註解工程師Java
- 我最推薦的一張Java後端學習路線圖,Java工程師必備Java後端工程師
- 新手Java學習路線乾貨教材 《Java Web開發實戰》JavaWeb
- Linux運維工程師推薦學習的開發語言Linux運維工程師
- Java初級~中級~高階進階之路Java
- 完美!位元組高階工程師熬夜梳理的2020版Java成神之路指南工程師Java
- Java 開發工程師需要學什麼?Java工程師
- Java開發工程師需要學什麼?Java工程師
- Java培訓進階書籍推薦,趕快收藏起來!Java
- 前端工程師做事的三重境界:我的進階之路前端工程師
- Java成長之路--一個非科班生的進階之路Java
- 【開源推薦】進階實戰,從一款音樂播放器開始播放器
- Laravel 我的教程筆記: Web 開發實戰進階 建立專案Laravel筆記Web
- Java工程師修煉之路(校招總結)Java工程師