1. 程式人生 > >JDBC應用程式常見介面API和基本操作步驟

JDBC應用程式常見介面API和基本操作步驟

一、常用JDBC API

在java.sql包中包含體現JDBC基本功能的若干介面和類:

1.Driver 介面:代表驅動程式

2.DriverManager 類:驅動程式管理員

3.Connection 介面:代表資料庫連線

4.Statement 、PreparedStatement、CallableStatement 介面:代表資料庫操作物件

5.ResultSet 介面:代表結果集

6.DatabaseMetadata、ResultSetMetadata介面:代表元資料

7.Types 類:代表JDBC型別

===============================================================================

二、若干API的具體說明

Statement和 PreparedStatement ------SQL語句執行介面

      Statement 介面代表了一個數據庫的狀態,再向資料庫傳送相應的SQL語句時,都需要建立Statement 介面或者PreparedStatement 介面。

Statement 主要用於操作不帶引數的SQL語句,比如增、刪、改。

PreparedStatement:預編譯的Statement介面

 第一步:通過連接獲得PreparedStatement 介面物件,用帶佔位符(?)的sql語句構造。

                    PreparedStatement ps=con.praperedStatement("select * from test where id=?");

    第二步:設定引數

                    ps.setString(1,"5");

    第三步:執行sql語句

                    rs= ps.executeQuery();

Statement 傳送完整的sql語句到資料庫不是直接執行,而是先編譯、後執行。

PreparedStatement 先發送帶引數的sql語句,在傳送一組引數值。

如果是同構的sql語句,則PreparedStatement 效率高。對於異構的sql語句,兩者效率差不多。

同構: 兩個sql語句可編譯的部分是相同的,只有引數值不同。

異構: 兩個sql語句的格式是不同的。

注意點:1.使用預編譯的Statement

 (即PreparedStatement )編譯多條sql語句一起執行。

          2.可以跨資料庫使用,編寫通用程式。

          3.能用預編譯時儘量用預編譯。

--------------------------------------------------------------------------------------------------------

ResultSet介面:

     ResultSet介面是查詢結果集介面,它對返回的結果集進行處理。ResultSet是程式設計師進行JDBC操作的必須介面。

---------------------------------------------------------------------------------------------------------

ResultSetMetaData----元資料操作介面:

      ResultSetMetaData 是對元資料進行操作的介面,可以實現很多高階功能。Hibernate執行資料庫的操作,大多是通過此介面。可以認為,此介面是SQL查詢語言的一種反射機制。ResultSetMetaData 可以通過資料的形式,來遍歷資料庫各個欄位的屬性。對於開發者來說,此機制意義重大。

    JDBC通過元資料(MetaData)來獲取具體的表相關的資訊,例如,可以查詢資料庫中有哪些表、標有哪些欄位、欄位的屬性等。MetaData 通過一系列的getXXX 將這些資訊返回給我們。

    MetaData元資料包括 資料庫源資料DatabaseMetadata 和 結果集元資料ResultSetMetaData 。

     資料庫源資料DatabaseMetadata: 使用connection.getMetaData()獲得了關於資料庫整體的元資料資訊。

    結果集元資料ResultSetMetaData: resultSet.getDataMeta獲得的比較重要的是表的列名、列的屬性等資訊。

    結果集元資料物件: ResultSetMetaData meta = rs.getDataMeta();

                  欄位個數:meta.getColumnCount();

                  欄位名字:meta.getColumnName();

                  欄位JDBC型別:meta.getColumnType();

                  欄位資料庫型別:meta.getColumnTypeName();

    資料庫元資料物件: DatabaseMetaData meta = con.getMetaData();

                   資料庫名:meta.getDatabaseProductName();

                   資料庫版本號:meta.getDatabaseProductVersion();

                   資料庫驅動名:meta.getDriverName();

                   資料庫驅動版本號:meta.getDriverVersion();

                   資料庫URL:meta.getURL();

                   該連線的資料庫登入名:meta.getUserName();

-------------------------------------------------------------------------------------------------------------------------------------

三、JDBC應用程式的基本步驟:

1.註冊驅動

2.建立資料庫連線

3.建立資料庫操作物件

4.執行SQL

5.處理結果集

6.關閉JDBC物件

1.註冊一個驅動driver

         註冊驅動程式的三種方式:

         方式一:Class.forName("Oracle.jdbc.driver.OracleDriver");

         方式二:Driver driver=new Oracle.jdbc.driver.OracleDriver();

                   DriverManager.registerDriver(driver);

         方式三:編譯時在虛擬機器中載入驅動

                   javac -D jdbc.drivers = oracle.jabc.driver.OracleDriver xxx.java

                   java -D jabc.drivers = 驅動全名   類名

                   使用系統屬性名,載入驅動 -D表示為系統屬性賦值

              附:mysql 的Driver全名:com.mysql.jdbc.Driver

                   sqlserver 的Driver全名:com.microsoft.jdbc.sqlserver.SQLServerDriver

2.建立連線     

         conn=DriverManager.getConnection

                   ("jdbc:oracle.thin:@192.168.0.254:1521/test","username","password");

        上面括號中放的是:oracle自協議[email protected]+ip:port / 資料庫例項名,資料庫使用者名稱,使用者密碼。

         mysql url寫法:jdbc:mysql://192.168.254:3306/test

3.獲得一個Statement物件

        sta = conn.createStatement();

4.通過Statement執行sql語句

        sta.excuteQuery(sql);//返回一個查詢結果集

        sta.executeUpdate(sql);//返回值為 int 型,表示影響記錄的條數

        將sql語句通過連線傳送到資料庫中執行,以實現對資料庫的操作。

5.處理結果集

        使用Connection物件獲得一個Stagement,Statement中的executeQuery(String sql)方法可以使用select語句查詢,並返回一個結果集 ResultSet 。通過遍歷這個結果集,可以獲得select語句的查詢結果。ResultSet的next()方法會操作一個遊標從第一條記錄開始讀取,直到最後一天記 錄。 executeUpdate(String sql)方法用於執行 DDL /DML 語句,比如update,delete等。

         只有select語句才有返回結果集。

         例:Statement sta = con.createStatement(); //建立statement物件

              String sql = " insert into test(id,name) values(1"+" " " "+"king"+" "" "+") ";

              sta.executeUpdate(sql); //執行sql語句

              String sql = "select * from test";

              ReslutSet rs = sta.executeQuery(sql);//執行sql語句後有結果集

              //遍歷處理結果集

              while(rs.next()){

                   System.out.println(rs.getInt("id"));

                   System.out.println(rs.getString("name"));

              }

6.關閉資料庫連線(釋放資源)

   呼叫close()方法:

        rs.close();         

        sta.close();          

        conn.close();

        ResultSet 、Statement 和Connetction是依次依賴的。

        注意:要按先 ResultSet ,再Statement,最後Connetction的順序關閉資源。因ResultSet和Statement在連線的情況下才能使用,所以在連使用束 後可能還有其他的statement還在連線,所以不能先關閉Connection。

相關推薦

JDBC應用程式常見介面API基本操作步驟

一、常用JDBC API在java.sql包中包含體現JDBC基本功能的若干介面和類:1.Driver 介面:代表驅動程式2.DriverManager 類:驅動程式管理員3.Connection 介面:代表資料庫連線4.Statement 、PreparedStatemen

js之陣列API(應用程式程式設計介面)

資料API是陣列原型中(Array.prototype.*)的陣列方法 1.新增元素    unshift() 方法(佇列方法) 新增到開頭,返回陣列的length     push()方法(棧方法)  arr.push(1

23 Flask mega-tutorial 第23章應用程式程式設計介面API

如需轉載請註明出處。 win10 64位、Python 3.6.3、Notepad++、Chrome 67.0.3396.99(正式版本)(64 位) 注:作者編寫時間2018-05-09,linux、python 3.5.2 以下內容均是加入自己的理解與增刪,

Amazon Lex常見問題_深度學習的應用程式對話介面

問:什麼是 Amazon Lex? Amazon Lex 是一種使用語音和文字構建對話介面的服務。Amazon Lex 使用的對話引擎與 Alexa 相同,可以提供高質量的語音識別和語言理解功能,讓您能夠在新的或現有的應用程式中新增掌握自然語言的精密“聊天機器

Linux核心使用者空間應用程式介面—系統呼叫

系統呼叫 就是使用者空間應用程式和核心提供的服務之間的一個介面。由於服務是在核心中提供的,因此無法執行直接呼叫;相反,您必須使用一個程序來跨越使用者空間與核心之間的界限。在特定架構中實現此功能的方法會有所不同。因此,本文將著眼於最通用的架構 —— i386。 在本文中

理解Web應用程式的程式碼結構執行原理(3)

1、理解Web應用程式的執行原理和機制        Web應用程式是基於瀏覽器/伺服器模式(也稱B/S架構)的應用程式,它開發完成後,需要部署到Web伺服器上才能正常執行,與使用者互動的客戶端是網頁瀏覽器。 瀏覽器負責顯示來自伺服器的資料和接受使用者的輸入資料,也

android應用程式介面程式設計

要點 android的介面與view元件 view元件和viewgroup元件 android控制程式的三種方式 通過繼承view開發自定義view android常見的佈局管理器 文字框元件:textview和edittext 按鈕元件:button 特殊按鈕元件:radiobut

Kik的加密貨幣應用程式在App StoreGoogle Store上架

點選上方 “藍色字” 可關注我們! 暴走時評:圍繞kin構建的移動應用程式的數量——由移動訊息應用程式Kik建立和釋出的加密貨幣——正在增加。隨著Google Play和iOS的軟體商店批准,將有更多的app可用,預計未來

轉自老羅 Android應用程式資源的編譯打包過程分析

原文地址   http://blog.csdn.net/luoshengyang/article/details/8744683 轉載自老羅,轉載請說明   我們知道,在一個APK檔案中,除了有程式碼檔案之外,還有很多資原始檔。這些資原始檔是通過An

python中 雜湊表應用常見函式 MD5SHA2演算法

通過雜湊函式計算資料儲存 insert(key, value) 插入鍵值對 get(key) 獲取值 delete(key) 刪除值 常見雜湊函式 除法雜湊:h(k) = k % m 乘法雜湊:h(k) = floor(m*(

JDBC詳解之與mySQL資料庫的連線基本操作

JDBC詳解 JDBC詳解 一 JDBC基本操作 MySQL的JDBC驅動包: mysql-connector-java-5.1.3

C#開發程式登入介面使用者名稱密碼的驗證

今天呢!小編比較閒!回想一下自己開發過的程式!然後呢!為了便於加深記憶!小編便自己又寫了一遍進銷存程式!好吧廢話不多說!進入主題啦! 這個關於Models部分我就不用講了吧!學C#的應該都懂的!...略過... DAL部分 public class UsersServic

WIN7中元件服務中的DCOM配置找不到Microsoft Excel應用程式的解決辦法

對 Excel 進行程式設計,實際上就是通過 .Net Framework 去呼叫 Excel 的 COM 元件,所有要在 Web 環境下呼叫 COM 元件的時候,都需要對其進行相應的配置。很多朋友都反映在 Windows 環境下除錯正常的程式,一拿到 Web 環境中就出錯,實際上就是因為缺少了這一步。

【軟體開發底層知識修煉】二十六 ABI-應用程式二進位制介面 學習總結文章目錄

前面學習了ABI的知識,感覺受益良多。對底層與編譯器有更加深刻的認識,為此這裡將前面寫過的關於ABI 的文章給列出來,方便學習與翻閱。 【軟體開發底層知識修煉】二十一 ABI-應用程式二進位制介面一 【軟體開發底層知識修煉】二

軟體開發底層知識修煉】二十三 ABI-應用程式二進位制介面三之深入理解函式棧幀的形成與摧毀

上兩篇文章我們初步接觸了ABI-應用程式二進位制介面的概念,點選連結檢視上一篇文章:【軟體開發底層知識修煉】二十二 ABI-應用程式二進位制介面 二。瞭解了為什麼會有ABI的存在。本篇文章繼續學習ABI 的內容。學習在ABI規範下,函式棧幀的結構與函式呼叫時函式棧幀的詳

【軟體開發底層知識修煉】二十二 ABI-應用程式二進位制介面

上一篇文章學習了ABI的相關內容,具體最後分析了不同ABI下結構體的對齊方式的不同。點選連結檢視上一篇文章:【軟體開發底層知識修煉】二十一 ABI-應用程式二進位制介面一 本篇文章繼續學習ABI相關內容。是上一篇文章的補充,如果沒有看過上一篇文章,一定要看上一篇

【軟體開發底層知識修煉】二十一 ABI-應用程式二進位制介面

前面學習了可執行程式的結構,點選連結檢視上一篇文章:【軟體開發底層知識修煉】二十 深入理解可執行程式的結構 本篇文章開始新的篇章,學習應用程式的二進位制介面-ABI。 文章目錄 1 什麼是ABI(Appli

C / C ++應用程式中的INT_MAXINT_MIN

大多數時候,在競爭性程式設計中,需要分配資料型別可以容納的變數,最大值或最小值,但是記住如此大而精確的數字是一項困難的工作。因此,C ++有一些巨集來表示這些數字,因此可以直接將這些巨集分配給變數,而無需實際輸入整數。 INT_MAX是一個巨集,指定整數變數不能儲存超出此限制的任何值。 INT_

Z-Stack 作業系統抽像層應用程式程式設計介面

【轉】http://bbs.eeworld.com.cn/thread-375521-1-1.html 1.介紹 1.1目的 本檔案的目的是詳細說明作業系統抽象層(OSAL)API 。該API允許Z-stack寫自己內部的軟體元件而與具體的作業系統、核心、或者任務環境無關(包括控制迴圈或

如何獲取應用程式的版本號版本名

實現獲取應用程式的版本號和阪本名,通過獲取包管理器開始;步驟如下: 程式如下 public class MainActivity extends AppCompatActivity { Co