教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

JDBC程序具體實(shí)現(xiàn)步驟演示【Java技術(shù)文章】

更新時(shí)間:2021年06月07日16時(shí)21分 來(lái)源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

熟悉了JDBC的編程步驟后,接下來(lái)通過(guò)一個(gè)案例并依照上一小節(jié)所講解的步驟來(lái)演示JDBC的使用。此案例會(huì)從tb_user表中讀取數(shù)據(jù),并將結(jié)果打印在控制臺(tái)。

需要說(shuō)明的是,Java中的JDBC是用來(lái)連接數(shù)據(jù)庫(kù)從而執(zhí)行相關(guān)數(shù)據(jù)相關(guān)操作的,因此在使用JDBC時(shí),一定要確保安裝有數(shù)據(jù)庫(kù)。常用的關(guān)系型數(shù)據(jù)庫(kù)有MySQL和Oracle,本書(shū)就以連接MySQL數(shù)據(jù)庫(kù)為例,使用JDBC執(zhí)行相關(guān)操作。

案例的具體實(shí)現(xiàn)步驟如下:

(1) 搭建數(shù)據(jù)庫(kù)環(huán)境

在MySQL數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名稱為jdbc的數(shù)據(jù)庫(kù),然后在該數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名稱為tb_user的表,創(chuàng)建數(shù)據(jù)庫(kù)和表的SQL語(yǔ)句如下:

CREATE DATABASE jdbc;
USE jdbc;
CREATE TABLE tb_user(
        id INT PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(40),
        sex VARCHAR(2),    
        email VARCHAR(60),
        birthday DATE        
);
上述創(chuàng)建tb_user表時(shí)添加了id、NAME、sex、email和birthday共5個(gè)字段,其中NAME字段名稱為大寫(xiě)形式,這是因?yàn)閚ame字段在MySQL數(shù)據(jù)庫(kù)中屬于關(guān)鍵字,所以為了方便區(qū)分,這里將name字段名稱全部用大寫(xiě)表示。

數(shù)據(jù)庫(kù)和表創(chuàng)建成功后,再向tb_user表中插入3條數(shù)據(jù),插入的SQL語(yǔ)句如下所示:

INSERT INTO tb_user(NAME,sex,email,birthday) 
VALUES ('Jack','男','jack@126.com','1980-01-04'),
('Tom','男','tom@126.com','1981-02-14'),
('Lucy','女','lucy@126.com','1979-12-28');

為了查看數(shù)據(jù)是否添加成功,使用SELECT語(yǔ)句查詢tb_user表中的數(shù)據(jù),執(zhí)行結(jié)果如圖1所示。

實(shí)現(xiàn)JDBC程序

圖1 tb_user表中的數(shù)據(jù)

注意:

數(shù)據(jù)庫(kù)和表創(chuàng)建成功后,如果使用的是命令行窗口向tb_user表中插入帶有中文的數(shù)據(jù),命令行窗口可能會(huì)報(bào)錯(cuò),同時(shí)從MySQL數(shù)據(jù)庫(kù)查詢帶有中文數(shù)據(jù)還可能會(huì)顯示亂碼,這是因?yàn)镸ySQL數(shù)據(jù)庫(kù)默認(rèn)使用的是UTF-8編碼格式,而命令行窗口默認(rèn)使用的是GBK編碼格式,所以執(zhí)行帶有中文數(shù)據(jù)的插入語(yǔ)句會(huì)出現(xiàn)解析錯(cuò)誤。為了在命令行窗口也能正常向MySQL數(shù)據(jù)庫(kù)插入中文數(shù)據(jù),以及查詢中文數(shù)據(jù),可以在執(zhí)行插入語(yǔ)句和查詢語(yǔ)句前,先在命令行窗口執(zhí)行以下兩條命令:

set character_set_client=gbk;
set character_set_results=gbk;

執(zhí)行完上述兩條命令后,再次在命令行窗口執(zhí)行插入和查詢操作就不再出現(xiàn)亂碼問(wèn)題了。

(1) 創(chuàng)建項(xiàng)目環(huán)境,導(dǎo)入數(shù)據(jù)庫(kù)驅(qū)動(dòng)

在Eclipse中新建一個(gè)名稱為chapter09的Java項(xiàng)目,使用鼠標(biāo)右鍵單擊項(xiàng)目名稱,然后選擇【New】→【Folder】,在彈出窗口中將該文件夾命名為lib并單擊【Finish】按鈕,此時(shí)項(xiàng)目根目錄中就會(huì)出現(xiàn)一個(gè)名稱為lib的文件夾。將下載好的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)文件Jar包(mysql-connector-java-5.1.46-bin.jar)復(fù)制到項(xiàng)目的lib目錄中,并使用鼠標(biāo)右擊該JAR包,在彈出框中選擇【Build Path】→【Add to Build Path】,此時(shí)Eclipse會(huì)將該JAR包發(fā)布到類(lèi)路徑下。加入驅(qū)動(dòng)后的項(xiàng)目結(jié)構(gòu)如圖2所示。

實(shí)現(xiàn)JDBC程序

其中,MySQL驅(qū)動(dòng)文件可以在其官網(wǎng)地址:http://dev.mysql.com/downloads/connector/j/頁(yè)面中下載,單擊頁(yè)面Platform Independent (Architecture Independent), ZIP Archive后的“Download”按鈕,并在新打開(kāi)的窗口中的單擊 “No thanks, just start my download”超鏈接后即可下載驅(qū)動(dòng)壓縮包(本書(shū)編寫(xiě)時(shí)的最新驅(qū)動(dòng)版本文件是mysql-connector-java-5.1.46.zip),解壓后即可得到相應(yīng)JAR包。

(1) 編寫(xiě)JDBC程序

在項(xiàng)目chapter09的src目錄下,新建一個(gè)名稱為com.itheima.jdbc的包,并在該包中創(chuàng)建類(lèi)Example01。在該類(lèi)讀取數(shù)據(jù)庫(kù)中的tb_user表,并將結(jié)果輸出到控制臺(tái),如文件1所示。

文件1 Example01.java

     import java.sql.*;
     public class Example01 {
         public static void main(String[] args) throws SQLException  {
             Connection conn =null;
             Statement stmt =null;
             ResultSet rs =null;
             try {
                 // 1. 加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
                 Class.forName("com.mysql.jdbc.Driver");
                 // 2.通過(guò)DriverManager獲取數(shù)據(jù)庫(kù)連接
                 String url = "jdbc:mysql://localhost:3306/jdbc";
                 String username = "root";
                 String password = "root";
                 conn = DriverManager.getConnection(url,username, password);
                 // 3.通過(guò)Connection對(duì)象獲取Statement對(duì)象
                 stmt = conn.createStatement();
                 // 4.使用Statement執(zhí)行SQL語(yǔ)句
                 String sql = "select * from tb_user";
                 rs = stmt.executeQuery(sql);
                 // 5. 操作ResultSet結(jié)果集
                 System.out.println("id    |    name      |    sex  "
                                     + "   |    email        |    birthday ");
                 while (rs.next()) {
                     int id = rs.getInt("id");    // 通過(guò)列名獲取指定字段的值
                     String name = rs.getString("name");
                     String sex = rs.getString("sex");
                     String email = rs.getString("email");
                     Date birthday = rs.getDate("birthday");
                     System.out.println(id + "    |    " + name + "    |    "
                                + sex + "    |    " + email + "    |    " + birthday);
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             } finally {
                 // 6.關(guān)閉連接,釋放資源
                 if(rs !=null){ rs.close(); }
                 if(stmt !=null){ stmt.close(); }
                 if(conn !=null){ conn.close(); }
             }
         }
     }

運(yùn)行結(jié)果如圖3所示。

實(shí)現(xiàn)JDBC程序

圖3 運(yùn)行結(jié)果

文件1中,首先注冊(cè)了MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng),通過(guò)DriverManager獲取一個(gè)Connection對(duì)象,然后使用Connection對(duì)象創(chuàng)建一個(gè)Statement對(duì)象,Statement對(duì)象通過(guò)executeQuery(String sql)方法執(zhí)行了SQL語(yǔ)句,并返回結(jié)果集ResultSet,接下來(lái),通過(guò)遍歷ResultSet得到查詢結(jié)果并輸出,最后關(guān)閉連接,釋放數(shù)據(jù)庫(kù)資源。

從圖3中可以看到,tb_user表中的數(shù)據(jù)已被打印在了控制臺(tái)。至此第一個(gè)JDBC程序?qū)崿F(xiàn)成功。

注意:

在進(jìn)行數(shù)據(jù)庫(kù)連接時(shí),連接MySQL數(shù)據(jù)庫(kù)的username和password都要與創(chuàng)建MySQL數(shù)據(jù)庫(kù)時(shí)設(shè)置的登錄賬戶一致,否則登錄失敗。本章以及后續(xù)案例都默認(rèn)MySQL數(shù)據(jù)庫(kù)登錄的username和password都為“root”。






猜你喜歡:

使用JDBC編程的步驟是怎樣的?

Docker的底層技術(shù)有幾種?各有什么含義?

Spring事務(wù)的實(shí)現(xiàn)方式和實(shí)現(xiàn)原理【java面試必會(huì)】

什么是前后端分離?如何理解前后端分離?

傳智教育java開(kāi)發(fā)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!