Java JDBC 資料庫鏈接小結隨筆

来源:https://www.cnblogs.com/qsyj0522/archive/2019/12/25/12099249.html
-Advertisement-
Play Games

Java JDBC 資料庫鏈接小結隨筆 一、鏈接資料庫的步驟 二、 關於Statement 和 PrepareStatement 兩者區別 用法 三、關於 ResultSet 的一些小結 四、自定義工具類的封裝 五、一些異常的解釋 一、鏈接資料庫的步驟 註冊驅動 獲得鏈接對象 創建sql容器 執行s ...


 

Java JDBC 資料庫鏈接小結隨筆

一、鏈接資料庫的步驟

二、 關於Statement  和  PrepareStatement 兩者區別 用法

三、關於 ResultSet 的一些小結

四、自定義工具類的封裝

五、一些異常的解釋

 

一、鏈接資料庫的步驟

  •  註冊驅動
  •  獲得鏈接對象
  •  創建sql容器
  •  執行sql語句
  •  查詢操作
  •  關閉資源: 

  

 1 package demo1;
 2 
 3 import java.sql.*;
 4 
 5 public class demo1 {
 6     public static void main(String[] args) {
 7         try {
 8             Class.forName("com.mysql.cj.jdbc.Driver");
 9             String url="jdbc:mysql://127.0.0.1:3306/jdbc?serverTimezone=UTC";
10             /*目前手動改變 sql 伺服器 時區報錯問題*/
11             String username="root";
12             String password="root";
13             /*  com.mysql.cj.jdbc.Driver   */
14 
15             Connection con= DriverManager.getConnection(url,username,password);
16             System.out.println(con);
17             Statement stmt = con.createStatement();
18             ResultSet rs = stmt.executeQuery("select * from test");
19             while (rs.next()){
20                 int id=rs.getInt("id");
21                 String name=rs.getString(2);
22                 System.out.println("id:"+id+"-"+"name:"+name);
23             }
24 
25         }
26         catch (ClassNotFoundException e){
27             e.printStackTrace();
28         }
29         catch (SQLException e){
30             e.printStackTrace();
31         }
32     }
33 }
View Code

 

 

二、 關於Statement  和  PrepareStatement 兩者區別 用法

    PrepareStatement 繼承自 Statement 介面  擁有Statement 中的方法

    execute()
   executeQuery()
   executeUpdate()

 

 1 package demo1;
 2 
 3 import Util.connectionUtil;
 4 
 5 import java.sql.*;
 6 
 7 public class TestDemo {
 8     /*
 9     * 1. prepareStatement   Statement 區別
10     *
11     *   1)prepareStatement繼承自 statement
12     *           prepareStatement{  execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要參數}
13 
14     * 2.   介面用法
15 
16     * */
17 
18     public static void main(String[] args) {
19 
20         //直接使用 Util 包下自定義的 鏈接資料庫方法
21             Connection con=connectionUtil.getConnections("jdbc");
22             Statement stmt=null;
23             PreparedStatement ps=null;
24 
25             ResultSet resultSet=null;
26             ResultSet rs=null;
27 
28             String selectSql="select * from test";
29             try {
30                 stmt=con.createStatement();
31                 resultSet=stmt.executeQuery(selectSql);
32 
33 
34             System.out.println("Statement 介面:");
35             while (resultSet.next()){
36                 int id=resultSet.getInt("id");
37                 String name=resultSet.getString("name");
38                 System.out.println("id:"+id+"---"+"name:"+name);
39             }
40 
41 
42             System.out.println("PrepareStatement 介面:");
43 
44 
45             /* PrepareStatement */
46             ps=con.prepareStatement(selectSql);
47             rs=ps.executeQuery();
48             while (rs.next()){
49                 int id=rs.getInt("id");
50                 String name=rs.getString("name");
51                 System.out.println("id:"+id+"---"+"name:"+name);
52             }
53 
54 
55         } catch (SQLException e) {
56             e.printStackTrace();
57         }
58         finally {
59             if(con!=null){
60                 try {
61                     con.close();
62                 } catch (SQLException e) {
63                     e.printStackTrace();
64                 }
65             }
66         }
67     }
68 }
View Code

 

 

 

基本能用PrepareStatement 就不用 Statement    儘量避開   ‘1’ or "1"="1"    1的情況

 也會比 Statement 更靈活  

   execute()   executeQuery()  executeUpdate()    這三個方法也不需要用參數  直接調用

   例:

      PrepareStatement>

       String sql="select * from test where id= ?";

        PreparedStatement ps=con.prepareStatement(sql);
        ps.setInt(1,1)  

      /* ? 相當於 占位符
         setInt(index,value); 來給占位符設置值
         
set數據類型(index,value);
      */
      

      ----------------------------------------------------------
      Statement>
        stmt=con.createStatement();
resultSet=stmt.executeQuery(selectSql);
 

  

三、關於 ResultSet 的一些小結

     ResultSet  結果集   接收一個二維的數組集

     關於ResultSet 的一些方法

        

boolean next()              將游標從當前位置向前移一行。
String  getString(int columnIndex)     獲取此ResultSet對象的當前行中指定列的值
String  getString(String columnLabel)    獲取此ResultSet對象的當前行中指定列的值

四、自定義工具類的封裝

   

五、一些異常的解釋

 

 上述內容為 自學筆記  可自行參考

 


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

-Advertisement-
Play Games
更多相關文章
  • 轉載清註明原文地址,謝謝。 OS:Windows 10 第一步,從Python官方下載安裝包 Windows端下載地址:https://www.python.org/downloads/windows/ Win端64位3.8.0安裝包:https://www.python.org/ftp/pytho ...
  • 磁力搜索嗅探器裝成BT ague-dht ague-dht 是一個磁力鏈接嗅探器,它偽裝成BT下載客服端,加入DHT網路,嗅探磁力鏈接.每秒發送1000條請求時,平均3秒收到1次帶有infohash的announce_peer請求;10次get_peer請求. 環境要求 需要JDK11,MAVEN3 ...
  • 測試的意義 人們針對一個具體問題,通過分析和設計,最後用編程語言寫出了一個程式,如果它通過了語言解釋器(編譯器)的檢查,可以運行了,那麼下一步的工作就是設法確認它確實滿足了我們需求。這篇文章就是討論怎麼確認程式是否滿足用戶提出的需求。 滿足需求,換言之就是功能正常,確認功能正常可以從以下幾個方面確認 ...
  • 這份資源是我經過多年積累才整理歸類出來,有很多電子書我覺質量還是非常高的,由於電子書太多我也是用業餘時間挑著看的,這麼多資源自己保存著也是浪費,就想著現在把資源分享出來,希望能真正幫到大家; 資源我都整理在網盤了,之前分享出來的鏈接沒過幾天就自動取消,我就在文章底部放了二維碼,需要的添加好友就行了, ...
  • 一、僅做瞭解 //用戶組的處理 public class TestUserGroup { private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine(); //創建用戶和用戶組 @Test public voi ...
  • 流程中的某個任務由指定的group來完成,其中group由多個user組成。 一、直接指定辦理組 1、流程圖 2、部署和啟動流程 //部署流程 @Test public void bushu() { InputStream inputStream = this.getClass().getResou ...
  • 一、流程圖 二、分配個人任務的方式 1、直接指定辦理人 說明:這樣分配辦理人不夠靈活,因為項目開發中任務的辦理人不要放置在XML當中實際開發中辦理人是不固定的。 2、使用流程變數指定辦理人 2.1 流程圖中的設置 說明:在Activiti中#{username}和${username}的意義是一樣的 ...
  • 一、接收任務 接收任務(ReceiveTask)即等待任務,接收任務是一個簡單任務,它會等待對應消息的到達。當前,官方只實現了這個任務的java語義。 當流程達到接收任務,流程狀態會保存到資料庫中。在任務創建後,意味著流程會進入等待狀態,直到引擎接收了一個特定的消息, 這會觸發流程穿過接收任務繼續執 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...