Java通過JDBC連接資料庫的三種方式!!!並對資料庫實現增刪改查

来源:https://www.cnblogs.com/tianming18/archive/2019/01/24/10315085.html
-Advertisement-
Play Games

前言 java連接資料庫完整流程為: 1,獲得驅動(driver),資料庫連接(url),用戶名(username),密碼(password)基本信息的三種方式。 2,通過獲得的信息完成JDBC實現連接資料庫。 註:連接前請導入jar包,例:連接mysql資料庫需要導入mysql-connector ...


前言
java連接資料庫完整流程為:
1,獲得驅動(driver),資料庫連接(url),用戶名(username),密碼(password)基本信息的三種方式。
2,通過獲得的信息完成JDBC實現連接資料庫。
註:連接前請導入jar包,例:連接mysql資料庫需要導入mysql-connector-java-5.1.39-bin.jar包

連接資料庫的三種方式
三種方式中二,三最為常用

一,直接獲取資料庫信息,並jdbc驅動連接

這裡寫代碼片  public static Connection connection() {
        //獲得連接資料庫連接
        Connection conn=null;
        try {
        //初始化Driver類,註冊驅動
            Class.forName("com.mysql.jdbc.Driver");
            //連接資料庫
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/web", "root", "root");

        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn; 
    }

二,獲得db.properties文件中的配置信息獲得

註解: 
ResourceBundle 類的作用就是讀取資源屬性文件(properties),根據.properties文件的名稱信息(本地化信息),匹配當前系統的國別語言信息(也可以程式指定),然後獲取相應的properties文件的內容。
public class Jdbc_Conn2 {
      private static String driver;
      private static String url;
      private static String username;
      private static String password;
      static {
          //通過ResourceBundle獲得db文件中的信息
          ResourceBundle bundle = ResourceBundle.getBundle("db");
          //通過key值獲得db文件中的配置信息
          driver=bundle.getString(driver);
          url=bundle.getString(url);
          username=bundle.getString(username);
          password=bundle.getString(password);
      }

    public static Connection mysqlconn() {
        //連接資料庫
        Connection conn=null;
            Class.forName(driver);
            conn= DriverManager.getConnection(url, username, password);
            return conn; 
    }

三、通過IO流獲得db文件中配置信息

註解: 
*首先,調用對象的getClass()方法是獲得對象當前的類類型,這部分數據存在方法區中,而後在類類型上調用getClassLoader()方法是得到當前類型的類載入器,在Java中所有的類都是通過載入器載入到虛擬機中的,
而且類載入器之間存在父子關係,就是子知道父,父不知道子,這樣不同的子載入的類型之間是無法訪問的(雖然它們都被放在方法區中),所以在這裡通過當前類的載入器來載入資源也就是保證是和類類型同一個載入器載入的。 最後調用了類載入器的getResourceAsStream()方法來載入文件資源
*
public class Jdbc_Conn3 {
    private static String dirver;
    private static String url;
    private static String username;
    private static String password;
    static {
    //IO流
        InputStream is=Jdbc_Conn3.class.getClassLoader().getResourceAsStream("db.properties");
        Properties props=new Properties();
        try {
            props.load(is);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        dirver=props.getProperty("driver");
        url=props.getProperty("url");
        username=props.getProperty("username");
        password=props.getProperty("password");
    }


    public static Connection mysqlconn() {
        //1,獲得連接資料庫的驅動
        Connection conn=null;
        Class.forName(dirver);
        conn= DriverManager.getConnection(url, username, password);
        return conn; 
    }

連資料庫後,使用完畢需要關閉連接

關閉資料庫需要關閉以下資源:1,Connection(連接).2,PreparedStatement(預編譯).3,Result(結果集)

 public static void mysqlcolse(Connection con,PreparedStatement pstem,ResultSet rs) {

            try {
                if(con!=null) {
                con.close();
                }
                if(pstem!=null)
                {
                    pstem.close();
                }
                if(rs!=null) {
                    rs.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


    }

完成以上步驟便是一個連接資料庫的java模板了,以上連接方法與關閉方法存於一個java文件中即可完成。

增、刪、改、查

前言

1   以下代碼在完成連接資料庫的基礎之上完成,通過java實現對資料庫的增刪改查

一、查詢功能
註:
Connection中prepareStatement()方法,提供占位符(?),占位符設置參數setXXX(index,value)。優點:改動參數時,不需改動sql,通過占位符修改。
ResultSet類,作為查詢條件的返回集的作用

//先聲明對象,優點在於方便下方任意代碼塊調用對象信息。
    Connection con=null;
    PreparedStatement pstm=null;
    ResultSet rs=null;

    @Test
    public void testJv3()
    {
    //1,通過JDBC的模板連接上資料庫
    con=Jdbc_Conn3.mysqlcon();
    //2,編寫sql語句
    String sql="select * from user where uid=?";
    try {
    //3.預編譯需要執行的sql
        pstm = con.prepareStatement(sql);
        //prepareStatement中占位符?,通過setXXX(index,values)來進行設置,index從1開始,
        pstm.setInt(1, 1);
        //執行sql並返回查詢結果
        ResultSet rs = pstm.executeQuery();
        if(rs.next())
        {
            String password=rs.getString(3);
            String uname=rs.getString(2);
            System.out.println(uname+":"+password);
        }else {
            System.out.println("沒有結果");
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        Jdbc_Conn3.mysqlcolse(con, pstm, rs);
    }

    }

額外知識點:查詢條件輸出方式 
if():當只有一條結果時,可用if 
while():當有多條結果時,可用while

二、增,刪,改

增刪改,只需要改對應sql即可,以下代碼為模板。
PreparedStatement pstm=null;
        Connection con=null;
        //1,實例化MyDataSource
        ComboPooledDataSource mdsc= new ComboPooledDataSource();
        //2.從MyDataSource的池中獲得連接對象
        try {
            con= mdsc.getConnection();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        //3.寫sql
        String sql="insert into user values (null,?,?)";
        //4,預編譯
        try {
            pstm= con.prepareStatement(sql);
            pstm.setString(1, "zj");
            pstm.setString(2, "zj");
            int col=pstm.executeUpdate();
            if(col>0) {
                System.out.println("添加成功:"+col+"條數");
            }else {
                System.out.println("添加失敗");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            JDBCUtils_V3.release(con, pstm, null);
        }
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 恢復內容開始 Linux預設是允許Ping響應的,系統是否允許Ping由2個因素決定的:A、內核參數,B、防火牆,需要2個因素同時允許才能允許Ping,2個因素有任意一個禁Ping就無法Ping。 具體的配置方法如下: A、內核參數設置 1、允許PING設置 A.臨時允許PING操作的命令為:#ec ...
  • 1、查看防火牆狀態,哪些埠開放了 /etc/init.d/iptables status 2、配置防火牆 vi /etc/sysconfig/iptables ###################################### # Firewall configuration writt ...
  • DECLARE @Y1002 varchar(200),@A0100 varchar(200),@C0103 datetime ----定義變數 DECLARE Police_Department CURSOR FOR --定義游標 SELECT Y1002,A0100,C0103... ...
  • 一. 需求背景 MongoDB資料庫的強大的文檔模型使其成為處理數據的最佳方式。文檔適用於廣泛的流行數據模型,支持各種各樣的場景。文檔模型可以包含鍵值、關係數據集和圖形數據集,當然,還可以包含父子關係、列表/數組以及其他層次關係,它們比傳統的關係型資料庫技術(表格)具有更大的靈活性。由於文檔模型與主 ...
  • 總結幾個剛接觸到的sql語句,以後慢慢完善。 一、添加數據,insert語句 insert into table set columnName1 = value1,columnName2 = value2,…; sq1 = 'insert into boke_articles set ?'此處的問號 ...
  • 作為一個新手,第一次接觸資料庫,搞了兩天才創建自己的第一個資料庫,走了不少彎路,現總結一下: 一、設置MySql環境 安裝的XAMPP,下載了Navigate for MySql。 啟動Apache 和Mysql,連接伺服器 綠色代表啟動成功。 二、打開Navigate for MySql 創建服務 ...
  • 背景描述 問題分析 Q1:為什麼會產生臨時表? 這個不多說,SQL寫的惹不起,反正就是半個小時看不懂的那種,就是一眼就知道一定會產生臨時表的😂~~~ Q2:登錄到機器上去查看記憶體使用偏小? 因為這個物理機的記憶體是125G,但是mysql的總數據量不超過1G,所有實際並不需要多少記憶體就可以將所有數據 ...
  • 1.下載壓縮包,地址1(官網下載):https://www.mysql.com/downloads/ 地址2(百度網盤):https://pan.baidu.com/s/12lnpcr3thBe9k-6CyxvHeg 提取碼: j9ya 官網下載方法如下: 2.解壓壓縮包到自己喜歡的文件夾中;(以我 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...