JDBC介紹

来源:http://www.cnblogs.com/jishushijie/archive/2016/12/01/6115436.html
-Advertisement-
Play Games

1.DriverManager用來建立和資料庫的鏈接以及管理JDBC驅動程式 driverManager的常用方法 2.Connection代表Java程式和資料庫的連接 Connection的常用方法 3.Statement用來執行靜態的SQL語句。例如:對於insert,update和delet ...


1.DriverManager用來建立和資料庫的鏈接以及管理JDBC驅動程式

driverManager的常用方法

方法 描述
registerDriver(Driver driver) 在DerverManager中註冊JDBC驅動程式
getConnection(String url,String user,String pwd) 建立和資料庫的連接,返回Connection對象
setLoginTime(int seconds) 設定等待資料庫連接的最長時間
setLogWriter(PrintWriter out) 設定輸出資料庫日誌的PrintWriter對象

2.Connection代表Java程式和資料庫的連接

Connection的常用方法

方法 描述
getMetaData()  獲取一個 DatabaseMetaData 對象,該對象包含關於此 Connection 對象所連接的資料庫的元數據。例如當前資料庫連接的用戶名,資料庫的最大連接數,以及資料庫的版本等。
createStatement() 創建並返回Statement對象
prepareStatement(String sql) 創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到資料庫。

3.Statement用來執行靜態的SQL語句。例如:對於insert,update和delete語句,可以調用executeUpdate(String sql)的方法;對於select語句,可以調用executeQuery(String sql方法),這個方法返回一個ResultSet對象。

例如:

String sql="select id,name,title,price from books where name='tom' and price=40";

ResultSet rs=stmt.executeQuery(sql);//stmt為Statement對象

4.PreparedStatement用來執行動態的SQL語句。

例如:

String sql="select id,name,title,price from books where name=? and price=?";

在這種情況,用PreparedStatement比Statement更方便,因為PreparedStatement允許sql語句中包含參數。

PreparedStatement具體使用如下:

(1)生產PreparedStatement對象。例如:SQL語句中name的值和price的值都用"?"來替代,他們表示兩個可以被替換的參數:

  String sql="select id,name,title,price from books where name=? and price=?";

  PrepareStatement prepStmt=conn.prepareStatement(sql);

(2)調用PreparedStatement的setxxx方法,給參數賦值:

  prepStmt.setString(1,"tome");

  prepStmt.setString(2,40);

(3)執行SQL語句:

  ResultSet=prepStmt.executeQuery();

5.ResultSet表示select語句查詢得到的記錄集合。

(1)ResultSet的記錄行號從1開始,一個Statement對象在同一時刻只能打開一個ResultSet對象。調用ResultSet的next()方法可以使游標定位到下一條記錄。調用ResultSet的getxxx()方法可以取得某個欄位的值。

(2)ResultSet既可以通過欄位的序號來指定欄位,也可以通過欄位的名字來指定欄位。

例如:

String sql="select id,name,title,price from books where name='tome' and price=40";

ResultSet rs=stmt.executeQuery(sql);

如果要訪問id欄位,可以用

rs.getString(1); 或者rs.getString("id");

如果要取出ResultSet中所有記錄,可以採用下麵的迴圈語句:

while(rs.next()){

  String col1=rs.getString(1);

  String col2=rs.getString(2);

  String col3=ts.getString(3);

  float col4=rs.getFloat(4);

}

6.總結介紹JDBC訪問資料庫的步驟

  (1)裝載並註冊資料庫JDBC驅動程式,(其中JDBC-ODBC Driver是在JDK中自帶的,預設已經註冊,所以不需要再註冊

    //裝載JdbcOdbcDriver.class(只需要裝載,不需要註冊)

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //裝載並註冊SQLServerDriver

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

    java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

    //裝載並註冊OracleDriver

    Class.forName("oracle.jdbc.driver.OracleDriver");

    java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

    //裝載並註冊MySQLDriver

    Class.forName("com.mysql.jdbc.Driver");

    java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());//這個註冊不上必要的

    說明:

      對於mysql的驅動程式類com.mysql.jdbc.Driver,在JVM載入這個類時,會執行以下靜態代碼

      static{

        try{

          java.sql.DriverManager.registerDriver(new Driver());

        }catch(){

          throw new RuntimeException("..");

        }

        ....

      }

      所以程式中只要通過Class.forName方法載入mysql driver類即可,可以不需要再註冊。

  (2)建立與資料庫的連接

    Connection conn=java.sql.DriverManager.getConnection(url,user,password);

    mysql: url="jdbc:mysql://localhost:3306/dbName";

  (3)創建Statement對象,準備調用SQL語句

    Statement stmt=conn.createStatement();

  (4)調用SQL語句:

    String sql="select id,name,title,price from books where name='tom' and price=40";

    ResultSet rs=stmt.executeQuery(sql);

  (5)訪問ResultSet中的記錄集    

  (6)一次關閉 ResultSet,Statement和Connection對象:

    rs.close();

    stmt.close();

    conn.close();

 7.事務處理

  (1)在Connection類中提供了3個控制事物的方法:

    setAutoCommit(boolean autoCommit);設置是否自動提交事物

    commit();提交事物

    rollback();回滾事物

  (2)在DJBC API中,預設情況下為自動提交事物。可以通過調用setAutoCommit(false)來禁止提交事物。

    try{

      con.java.sql.DriverManager.getConnection(dbUrl,user,dbPwd);

      //禁止自動提交,設置回滾點

      con.setAutoCommit(false);

      stmt=con.createStatement();

      //資料庫更新操作1

      stmt.executeUpdate("update account set money=money-1000 where name='zhangsan'");

      //資料庫更新操作2

      stmt.executeUpdate("update account set money=money+1000 where name='lisi'");

      //事物提交

      con.commit();

    }catch(Exception e){

      e.printStackTrace();

      //操作不成功事物回滾

      con.rollback();

    }finally{

      stmt.close();

      con.close();

    }


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

-Advertisement-
Play Games
更多相關文章
  • 一、 Servlet簡介 二、Servlet的運行過程 Servlet程式是由Web伺服器調用,web伺服器收到客戶端的Servlet訪問請求後: 三、Servlet調用圖 四、Servlet訪問URL映射配置 同一個Servlet可以被映射到多個URL上,即多個<servlet-mapping>元 ...
  • 20161130問題解析請點擊今日問題下方的“【Java每日一題】20161201”查看 今日問題: 請問主程式輸出結果是什麼?(點擊以下“【Java每日一題】20161201”查看20161130問題解析) 題目原發佈於公眾號、簡書:【Java每日一題】20161201,【Java每日一題】201 ...
  • ...
  • 剛纔在做微信網頁授權的時候,發生一個錯誤!!!微信網頁授權redirect_uri 參數錯誤! 遇到問題,第一時間應該做的就是查看官網微信公眾平臺的技術文檔。 微信網頁授權 微信網頁授權 如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。 關 ...
  • jQuery簡介 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝JavaScript常用 ...
  • Initialization & Cleanup ___ Guaranteed initialization with the constructor In Java, the class designer can guarantee initialization of every object b ...
  • Spring是SSH中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下Spring的事務管理。Spring的事務管理分為聲明式跟編程式。聲明式就是在Spring的配置文件中進行相關配置;編程式就是用註解的方式寫到代碼里。下麵先說聲明式: Spring配置文件中關於事務配置總是由三個組 ...
  • 前些陣子忙完了公司前端靜態頁面的事情了之後,簡單學習了下php的基礎知識,今天想了想回顧一下php連接資料庫的方式,寫一下隨筆存一下看看 php連接資料庫埠和新建資料庫 連接成功後,創建簡單的數據表 在連接資料庫的時候,要保證資料庫的伺服器埠是打開的,不然無法連接到,書寫代碼之前,可以使用nav ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...