1. 程式人生 > >JDBC全攻略(包括環境搭建、mysql連線、具體的使用)

JDBC全攻略(包括環境搭建、mysql連線、具體的使用)

JDBC是Sun公司制定的一個可以用Java語言連線資料庫的技術。

一、JDBC基礎知識        

        JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關係資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC為資料庫開發人員提供了一個標準的API,據此可以構建更高階的工具和介面,使資料庫開發人員能夠用純 Java API 編寫資料庫應用程式,並且可跨平臺執行,並且不受資料庫供應商的限制。

1、跨平臺執行:這是繼承了Java語言的“一次編譯,到處執行”的特點;

2、不受資料庫供應商的限制:巧妙在於JDBC設有兩種介面,一個是面向應用程式層,其作用是使得開發人員通過SQL呼叫資料庫和處理結果,而不需要考慮資料庫的提供商;另一個是驅動程式層,處理與具體驅動程式的互動,JDBC驅動程式可以利用JDBC API建立Java程式和資料來源之間的橋樑。應用程式只需要編寫一次,便可以移到各種驅動程式上執行。Sun提供了一個驅動管理器,資料庫供應商——如MySQL、Oracle,提供的驅動程式滿足驅動管理器的要求就可以被識別,就可以正常工作。所以JDBC不受資料庫供應商的限制。

        JDBC API可以作為連線Java應用程式與各種關係資料庫的紐帶,在帶來方便的同時也有負面影響,以下是JDBC的優、缺點。優點如下:

  • 操作便捷:JDBC使得開發人員不需要再使用複雜的驅動器呼叫命令和函式;
  • 可移植性強:JDBC支援不同的關係資料庫,所以可以使同一個應用程式支援多個數據庫的訪問,只要載入相應的驅動程式即可;
  • 通用性好:JDBC-ODBC橋接驅動器將JDBC函式換成ODBC;
  • 面向物件:可以將常用的JDBC資料庫連線封裝成一個類,在使用的時候直接呼叫即可。

       缺點如下:

  • 訪問資料記錄的速度受到一定程度的影響;
  • 更改資料來源困難:JDBC可支援多種資料庫,各種資料庫之間的操作必有不同,這就給更改資料來源帶來了很大的麻煩

二、JDBC連線資料庫的流程及其原理

1、在開發環境中載入指定資料庫的驅動程式。例如,接下來的實驗中,使用的資料庫是MySQL,所以需要去下載MySQL支援JDBC的驅動程式(最新的是:mysql-connector-java-5.1.18-bin.jar);而開發環境是MyEclipse,將下載得到的驅動程式載入進開發環境中(具體示例的時候會講解如何載入)。

2、在Java程式中載入驅動程式。在Java程式中,可以通過 “Class.forName(“指定資料庫的驅動程式”)” 方式來載入新增到開發環境中的驅動程式,例如載入MySQL的資料驅動程式的程式碼為:  Class.forName(“com.mysql.jdbc.Driver”)

3、建立資料連線物件:通過DriverManager類建立資料庫連線物件ConnectionDriverManager類作用於Java程式和JDBC驅動程式之間,用於檢查所載入的驅動程式是否可以建立連線,然後通過它的getConnection方法,根據資料庫的URL、使用者名稱和密碼,建立一個JDBC Connection 物件。如:Connection connection =  DriverManager.geiConnection(“連線資料庫的URL", "使用者名稱", "密碼”)。其中,URL=協議名+IP地址(域名)+埠+資料庫名稱;使用者名稱和密碼是指登入資料庫時所使用的使用者名稱和密碼。具體示例建立MySQL的資料庫連線程式碼如下:

              Connection connectMySQL  =  DriverManager.geiConnection(“jdbc:mysql://localhost:3306/myuser","root" ,"root" );

4、建立Statement物件:Statement 類的主要是用於執行靜態 SQL 語句並返回它所生成結果的物件。通過Connection 物件的 createStatement()方法可以建立一個Statement物件。例如:Statement statament = connection.createStatement(); 具體示例建立Statement物件程式碼如下:

             Statement statamentMySQL =connectMySQL.createStatement(); 

5、呼叫Statement物件的相關方法執行相對應的 SQL 語句:通過execuUpdate()方法用來資料的更新,包括插入和刪除等操作,例如向staff表中插入一條資料的程式碼:

       statement.excuteUpdate( "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)" + " VALUES ('Tom1', 321, 'M', 'china','Personnel','3','3000' ) ") ; 

通過呼叫Statement物件的executeQuery()方法進行資料的查詢,而查詢結果會得到 ResulSet物件,ResulSet表示執行查詢資料庫後返回的資料的集合,ResulSet物件具有可以指向當前資料行的指標。通過該物件的next()方法,使得指標指向下一行,然後將資料以列號或者欄位名取出。如果當next()方法返回null,則表示下一行中沒有資料存在。使用示例程式碼如下:

       ResultSet resultSel = statement.executeQuery( "select * from staff" );

6、關閉資料庫連線:使用完資料庫或者不需要訪問資料庫時,通過Connectionclose() 方法及時關閉資料連線。

三、JDBC應用示例實驗

實驗內容:使用phpMyAdmin在MySQL中建立資料庫(myuser),並新增實驗所需的資料(新建staff表,新增一些記錄);編寫Java程式,利用JDBC連線在MySQL中建立好的資料庫(myuser),對staff表格進行插入、更新、刪除和查詢等操作。

實驗環境及開發工具:Win7作業系統;jdk1.6.0_26;XAMPP1.7.7(MySQL 5.1,  phpMyAdmin);MyEclipse 8.5

實驗環境的搭建:可參考我的部落格

實驗過程及步驟:

       1、下載MySQL支援JDBC的驅動程式:如果已經有了,可跳過這一步。前往MySQL官網(http://www.mysql.com/products/connector/ )下載驅動程式,,MySQL針對不同的平臺提供了不同的聯結器,我們需要的是DBC Driver for MySQL (Connector/J),如下圖所示,點選 Download 跟著網站的引導進行下載。開啟下載得到的壓縮包(mysql-connector-java-5.1.18.zip),將其中的Java包(mysql-connector-java-5.1.18-bin.jar),複製到MySQL目錄下(僅是為了方便才放到這裡),以備載入驅動程式時使用。




       2、建立資料庫:使用phpMyAdmin,登入MySQL,建立資料庫myuser,並在其中插入一個名為staff的表格。並新增一些資料,操作步驟如圖,登入進去MySQL資料庫後:

               1)建立資料庫,名稱為myuser,編碼為utf8_general_ci(支援中文);

建立資料庫

              2)新建表格,名稱為staff,表格有8個欄位;

                  3)8個欄位的設定,包括名稱、型別、值的長度、初始值、編碼等等(點選檢視大圖);


                4)新增成功後,檢視的staff表格情況:


5)往表格中插入一些實驗所需資料,需要插入兩條,一個是員工lucy的,還有lili的:


       3、在MyEclips中建立專案並在專案中新增MySQL驅動程式:建立的專案型別可以是Java專案或者是Java Web專案都可以。這裡建立的是Web專案,專案名稱可以隨便取,我命名為“JavaWebChp07”。建立成功後將步驟1裡下載得到的MySQL驅動程式包(mysql-connector-java-5.1.18-bin.jar)新增到工程的Build path中,新增過程如圖所示:




       4、編寫JDBC連線MySQL資料庫的例項具體程式碼,JDBC_Test.java:


具體程式碼:

  1. <pre name="code"class="java">package chp07;  
  2. import java.sql.Connection;  
  3. import java.sql.DriverManager;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.sql.Statement;  
  7. publicclass JDBC_Test {  
  8.     // 建立靜態全域性變數
  9.     static Connection conn;  
  10.     static Statement st;  
  11.     publicstaticvoid main(String[] args) {  
  12.         insert();   //插入新增記錄
  13.         update();   //更新記錄資料
  14.         delete();   //刪除記錄
  15.         query();    //查詢記錄並顯示
  16.     }  
  17.     /* 插入資料記錄,並輸出插入的資料記錄數*/
  18.     publicstaticvoid insert() {  
  19.         conn = getConnection(); // 首先要獲取連線,即連線到資料庫
  20.         try {  
  21.             String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
  22.                     + " VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')";  // 插入資料的sql語句
  23.             st = (Statement) conn.createStatement();    // 建立用於執行靜態sql語句的Statement物件
  24. 相關推薦

    JDBC包括環境搭建mysql連線具體的使用

    JDBC是Sun公司制定的一個可以用Java語言連線資料庫的技術。 一、JDBC基礎知識                 JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多

    嵌入式小白到大神學習學習路線+課程+學習書籍+練習項目

    samb iot 成員 基本功 手動 eat 編寫 溫度 模塊 文章較長,希望耐心閱讀,讀完相信會對你的學習一定有幫助~ 嵌入式工程師需要掌握的內容非常廣泛,嵌入式可以說是當下最有前途的IT應用領域,小到電子詞典、手機,大到航空航天設備都是典型的嵌入式系統,因此,通過嵌入式

    Linux一鍵安裝web環境阿裏雲ECS服務器

    傳輸 80端口 掛載 iyu 使用 ftp服務 老版本 雲服務 linux服務 摘自阿裏雲服務器官網,此處 一鍵安裝包下載: 點此下載 安裝須知 1、此安裝包可在阿裏雲所有linux系統上部署安裝,此安裝包包含的軟件及版本為: nginx:1.0.15、1.2.5、1.4.

    阿里雲Centos搭建javajdk1.8+tomcat9.0+mysql5.7

    由於專案需要部署到伺服器,但是學校課程推薦的新浪雲收費較高,所以最新購買了阿里雲,現在還有優惠活動(9塊錢買一年雲端儲存oos贈送半年雲伺服器cse,現在還可以,手慢無) 伺服器相關配置 推薦64位Centos,但是第一次選錯了也沒關係,可以通過停止例項

    【伺服器】Linux一鍵安裝web環境阿里雲伺服器Centos

    Centos 系統下的全能Web環境一鍵安裝程式 第一篇地址:http://www.dzbfsj.com/thread-1785-1-1.html 第二篇地址:http://www.cnblogs.com/ada-zheng/p/3724957.html Cen

    【微軟大法好】VS Tools for AI2

    port shell orf 方式 virt cnblogs 我們 玩耍 虛擬 接著上文,我們來討論如何使用Azure資源來訓練我們的tensorflow項目。Azure雲我個人用得很多,主要是因為微軟爸爸批了150刀每月的額度,我可以愉快地玩耍。 那麽針對Azure,有成

    【乾貨】Chrome外掛(擴充套件)開發轉載

    轉載來源:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html 【乾貨】Chrome外掛(擴充套件)開發全攻略 寫在前面 我花了將近一個多月的時間斷斷續續寫下這篇博文,並精心寫下完整demo,寫部落格的辛苦大家懂的,

    VSCode外掛開發WebView

    更多文章請戳VSCode外掛開發全攻略系列目錄導航。 什麼是Webview 大家都知道,整個VSCode編輯器就是一張大的網頁,其實,我們還可以在Visual Studio Code中建立完全自定義的、可以間接和nodejs通訊的特殊網頁(通過一個acquireVsCodeApi特殊方法),這個網頁就叫W

    VSCode外掛開發開發除錯技巧

    更多文章請戳VSCode外掛開發全攻略系列目錄導航。 前言 在介紹完一些比較簡單的內容點之後,我覺得有必要先和大家介紹一些開發中遇到的一些細節問題以及技巧,特別是後面一章節將要介紹WebView的知識,這個坑會比較多,避免大家走彎路。 開發方式 最理想的方式是準備雙顯示器,一個寫程式

    VSCode外掛開發跳轉到定義自動補懸停提示

    更多文章請戳VSCode外掛開發全攻略系列目錄導航。 跳轉到定義 跳轉到定義其實很簡單,通過vscode.languages.registerDefinitionProvider註冊一個provider,這個provider如果返回了new vscode.Location()就表示當前游標所在單詞支援跳轉

    嵌入式小白到大神學習學習路線+課程+學習書籍+練習專案

    文章較長,希望耐心閱讀,讀完相信會對你的學習一定有幫助~ 嵌入式工程師需要掌握的內容非常廣泛,嵌入式可以說是當下最有前途的IT應用領域,小到電子詞典、手機,大到航空航天裝置都是典型的嵌入式系統,因此,通過嵌入式技術人才的職業發展空間是非常大的。要快速學習掌握技術我們要學會抓住重點,學會取捨,達到一通百通,事

    Android-螢幕適配絕對詳細

    Android-螢幕適配全攻略(絕對詳細)(二) 關鍵字:非密度制約畫素(dp、sp) 螢幕適配最佳實踐 前言:這篇文章接著 上一篇 繼續講,上篇講到了螢幕適配的核心概念與單位和一種解決方案:解決方案-支援各種螢幕尺寸。本篇繼續講剩餘的其他兩種解

    Android-螢幕適配絕對詳細

    (一) 關鍵字:螢幕適配 px dp dpi sp large限定符 .9.png 2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常

    VSCode外掛開發概覽

    文章索引 寫在前面 一年前我寫了一篇3萬多字的Chrome外掛(擴充套件)開發全攻略,反響還不錯,幫助了很多新手快速上手,甚至包括大名鼎鼎的紅芯瀏覽器(戳這裡瞭解更多)。 最近因工作需要又接觸到了vscode外掛開發,所以趁勢再寫一篇有關vscode外掛開發的文章,記錄一些自己踩過的坑以及接觸vscod

    VSCode外掛開發程式碼片段設定自定義歡迎頁

    程式碼片段 程式碼片段,也叫snippets,相信大家都不陌生,就是輸入一個很簡單的單詞然後一回車帶出來很多程式碼。平時大家也可以直接在vscode中建立屬於自己的snippets: 建立程式碼片段 那麼如何在擴充套件中建立snippets呢? package.json檔案新增如下: "contribut

    VSCode外掛開發打包釋出升級

    釋出方式 外掛開發完了,如何釋出出去分享給他人呢?主要有3種方法: 方法一:直接把資料夾發給別人,讓別人找到vscode的外掛存放目錄並放進去,然後重啟vscode,一般不推薦; 方法二:打包成vsix外掛,然後傳送給別人安裝,如果你的外掛涉及機密不方便釋出到應用市場,可以嘗試採用這種方式; 方法三:註冊

    旅行青蛙旅かえる的最不懂日語的可以看看

    1、介面分為庭院和室內。2、庭院內上方為【主選單】,包括【現有物品】、【記錄】、【幫助】三個子選單。3、庭院內的田地,隨時間長出三葉草,日常採集三葉草作為貨幣。偶爾掉落的四葉草作為一次性護身符使用。三葉草數量處的    【黃金+號】進入氪金頁面,不要問我怎麼氪,佛系玩家心如止

    C#微信公眾號3--接管所有訊息驗證部分 C#程式碼

    新建網站 新建一般處理程式 怎麼操作SQL資料庫不寫了 只發一些關鍵部分程式碼 一般處理程式關鍵程式碼 public class Interface : IHttpHandler { public stati

    C#微信公眾號5--群發訊息時的openid對應的使用者是誰呢

    有一個openid不屬於公眾號關注使用者的任何一位 在通過微信控制檯群發訊息後 將有一個Event為MASSSENDJOBFINISH的事件推送 對應的openid 他是誰呢 他的nickname是張三瘋 來自 中國 廣東 廣州 簽名是DayDayUpUp

    C#微信公眾號4--實現回覆訊息C#程式碼

    接上文 這個函式把使用者發來的內容交接給messageHelp來處理 最後返回messageHelp.ReturnMessage private void Handle(string postStr) { messageHelp help = new