java的jdbc
㈠ 徹底搞懂JDBC的運行過程
前幾天筆者發布了博客,手寫mybatis徹底搞懂框架原理。為了幫助初學者更好理解mybatis框架,這次講解一下java的JDBC的運行過程。
JDBC的作用
JDBC的全稱是Java DataBase Connection,也就是Java資料庫連接,我們可以用它來操作關系型資料庫。JDBC介面及相關類在java.sql包和javax.sql包里。我們可以用它來連接資料庫,執行SQL查詢,存儲過程,並處理返回的結果。
JDBC介面讓Java程序和JDBC驅動實現了松耦合,使得切換不同的資料庫變得更加簡單。
JDBC的連接步驟
執行一次JDBC連接,分六個步驟進行:
1. 導入包
在程序中包含資料庫編程所需的JDBC類。大多數情況下,使用 import java.sql.* 就足夠了
2. 注冊JDBC驅動程序
需要初始化驅動程序,這樣就可以打開與資料庫的通信。
3. 打開一個連接
使用DriverManager.getConnection()方法來創建一個Connection對象,它代表一個資料庫的物理連接。
4. 執行一個查詢
需要使用一個類型為Statement或PreparedStatement的對象(兩者區別看後文),並提交一個SQL語句到資料庫執行查詢。
5. 從結果集中提取數據
這一步中演示如何從資料庫中獲取查詢結果的數據。使用ResultSet.getXXX()方法來檢索的數據結果
6. 清理環境資源
在使用JDBC與數據交互操作資料庫中的數據後,應該明確地關閉所有的資料庫資源以減少資源的浪費。本文使用了try with resources方式關閉資源,這是JDK7的語法糖,讀者可自行搜索。
完整代碼如下。
JDBC的最佳實踐
JDBC是如何實現Java程序和JDBC驅動的松耦合?
JDBC API使用Java的反射機制來實現Java程序和JDBC驅動的松耦合。看一下上文的JDBC示例,你會發現所有操作都是通過JDBC介面完成的,而驅動只有在通過Class.forName反射機制來載入的時候才會出現。
這是Java核心庫里反射機制的最佳實踐之一,它使得應用程序和驅動程序之間進行了隔離,讓遷移資料庫的工作變得更簡單。
Statement和PreparedStatement區別
預編譯
創建時的區別:
執行時的區別:
由上可以看出,PreparedStatement有預編譯的過程,已經綁定sql,之後無論執行多少次,都不會再去進行編譯,而Statement 不同,如果執行多次,則相應的就要編譯多少次sql,所以從這點看,PreparedStatement的效率會比Statement要高一些。PreparedStatement是預編譯的,所以可以有效的防止SQL注入等問題
佔位符
PrepareStatement可以替換變數在SQL語句中可以包含?,可以用?替換成變數。
而Statement只能用字元串拼接。
JDBC的ResultSet
在查詢資料庫後會返回一個ResultSet,它就像是查詢結果集的一張數據表。
ResultSet對象維護了一個游標,指向當前的數據行。開始的時候這個游標指向的是第一行。如果調用了ResultSet的next()方法游標會下移一行,如果沒有更多的數據了,next()方法會返回false。可以在for循環中用它來遍歷數據集。
默認的ResultSet是不能更新的,游標也只能往下移。也就是說你只能從第一行到最後一行遍歷一遍。不過也可以創建可以回滾或者可更新的ResultSet,像下面這樣。
當生成ResultSet的Statement對象要關閉或者重新執行或是獲取下一個ResultSet的時候,ResultSet對象也會自動關閉。
可以通過ResultSet的getter方法,傳入列名或者從1開始的序號來獲取列數據。
ResultSet的不同類型
根據創建Statement時輸入參數的不同,會對應不同類型的ResultSet。如果你看下Connection的方法,你會發現createStatement和prepareStatement方法重載了,以支持不同的ResultSet和並發類型。
ResultSet對象有三種類型。
ResultSet有兩種並發類型。
㈡ JDBC使用步驟過程
JDBC操作資料庫的基本步驟:
1、載入JDBC驅動程序。
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), 這通過java.lang.Class類的靜態方法forName(String className)實現。成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL。
連接URL定義了連接資料庫時的協議、子協議、數據源標識。
書寫形式:協議:子協議:數據源標識。
3、創建資料庫的連接。
要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象, 該對象就代表一個資料庫的連接。
使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和 密碼來獲得。
4、創建一個Statement,要執行SQL語句,必須獲得java.sql.Statement實例。
Statement實例分為以下3 種類型:
(1)執行靜態SQL語句。通常通過Statement實例實現。
(2)執行動態SQL語句。通常通過PreparedStatement實例實現。
(3)執行資料庫穗鬧早存儲過程。通常通過CallableStatement實例實現。
5、執行SQL語句。
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate 和execute
6、處理兩種情況的結果。
(1)執行更新返回的是本次操作影響到的記錄數。
(2)執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些彎李 行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據。
7、關閉JDBC對象(關閉結果集-->關閉資料庫操作對象-->關閉連接)。
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 明順序相反:
(1)關閉記錄集。
(2)關閉聲明。
(3)關閉連接對象。
擴猜雀展資料:
一、JDBC(Java DataBase Connectivity,java資料庫連接)
是一種用於執行SQL語句的Java API,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據此可以構建更高級的工具和介面,使資料庫開發人員能夠編寫資料庫應用程序,同時,JDBC也是個商標名。
二、特性
Java 具有堅固、安全、易於使用、易於理解和可從網路上自動下載等特性,是編寫資料庫應用程序的傑出語言。所需要的只是 Java應用程序與各種不同資料庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。
三、用途
簡單地說,JDBC 可做三件事:與資料庫建立連接、發送 操作資料庫的語句並處理結果。
㈢ java jdbc的中文思想
JDBC概念
JDBC(Java DataBase Connectivity)是一種資料庫連接技術,
能實現Java程序對各種資料庫的訪問。由一組使用Java語言編寫的類和介面(JDBC API)
組成,他們位於java.sql以及javax.sql中。作用:
1.建立與資料庫的訪問連接。
2.將編寫好的SQL語句發送到資料庫執行。
3.對資料庫返回的執行結果進行處理。JDBC API工作的四個環節:
1.DriverManager類:依據資料庫的不同,管理JDBC驅動。
2.Connection介面:負責連接資料庫並擔任傳送數據的任務。
3.Statement介面:有Connection產生,負責執行SQL語句。
4.ResultSet介面:負責保存Statement執行後所產生的查詢結果。JDBC訪問資料庫的步驟:
1.使用Class.forName()方法載入JDBC驅動類。
Class.forName("JDBC驅動類的名稱");
如果系統中不存在給定的類,則會引發ClassNotFoundExceptionyichang。
這里需要try..catch..
2.使用DriverManager類獲取資料庫的連接。
Connection connection=DriverManager.getConnection(url,username,password);
DriverManager類跟蹤已注冊的驅動程序,當調用getConnection()方法時,它會
搜索整個驅動程序列表,直到找到能夠連接至資料庫連接字元串中的指定的資料庫
的驅動程序。載入此驅動程序之後,將使用DriverManager類的getConnection()方法
建立與資料庫的連接。
3.創建PreparedStatement/Statement介面的實列,發送SQL語句,
String sql="select * from table";
Statement st=connection.createStatement();
ResultSet rs=st.executeQuery(sql);
這里需要明白一點:Statement 並不執行SQL語句,只是將SQL語句
發送給資料庫,由資料庫來執行SQL語句。
4.處理SQL執行結果,並得到結果集,
執行SQL語句後返回一個結果集ResultSet對象。
處理結果集使用ResultSet對象的next()方法判斷結果集是否包含數據。
在結果集部位空的情況下調用ResultSet的getXxx()方法得到記錄中欄位
對應的值。
while(rs.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
}釋放資源
1.先創建的後釋放,後創建的先釋放。
2.將釋放資源放在finally塊中,確保程序最終執行釋放資源的語句。
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(connection!=null){
connection.close();
}
這里需要try..catch..
㈣ java中使用JDBC完成資料庫操作的基本步驟是什麼
創建一個以JDBC連接資料庫的程序,包含7個步驟: x0dx0a 1、載入JDBC驅動程序: x0dx0a 在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), x0dx0a 這通過java.lang.Class類的靜態方法forName(String className)實現。 x0dx0a 例如: x0dx0a try{ x0dx0a //載入MySql的驅動類 x0dx0a Class.forName("com.mysql.jdbc.Driver") ; x0dx0a }catch(ClassNotFoundException e){ x0dx0a System.out.println("找不到驅動程序類 ,載入驅動失敗!"); x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a 成功載入後,會將Driver類的實例注冊到DriverManager類中。 x0dx0a 2、提供JDBC連接的URL x0dx0a •連接URL定義了連接資料庫時的協議、子協議、數據源標識。 x0dx0a •書寫形式:協議:子協議:數據源標識 x0dx0a 協議:在JDBC中總是以jdbc開始 x0dx0a 子協議:是橋連接的驅動程序或是資料庫管理系統名稱。 x0dx0a 數據源標識:標記找到資料庫來源的地址與連接埠。 x0dx0a 例如:(MySql的連接URL) x0dx0a jdbc:mysql: x0dx0a //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; x0dx0a useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為 x0dx0a gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。 x0dx0a 3、創建資料庫的連接 x0dx0a •要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象, x0dx0a 該對象就代表一個資料庫的連接。 x0dx0a •使用DriverManager的getConnectin(String url , String username , x0dx0a String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和 x0dx0a 密碼來獲得。 x0dx0a 例如: x0dx0a //連接MySql資料庫,用戶名和密碼都是root x0dx0a String url = "jdbc:mysql://localhost:3306/test" ; x0dx0a String username = "root" ; x0dx0a String password = "root" ; x0dx0a try{ x0dx0a Connection con = x0dx0a DriverManager.getConnection(url , username , password ) ; x0dx0a }catch(SQLException se){ x0dx0a System.out.println("資料庫連接失敗!"); x0dx0a se.printStackTrace() ; x0dx0a } x0dx0a 4、創建一個Statement x0dx0a •要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 x0dx0a 種類型: x0dx0a 1、執行靜態SQL語句。通常通過Statement實例實現。 x0dx0a 2、執行動態SQL語句。通常通過PreparedStatement實例實現。 x0dx0a 3、執行資料庫存儲過程。通常通過CallableStatement實例實現。 x0dx0a 具體的實現方式: x0dx0a Statement stmt = con.createStatement() ; x0dx0a PreparedStatement pstmt = con.prepareStatement(sql) ; x0dx0a CallableStatement cstmt = x0dx0a con.prepareCall("{CALL demoSp(? , ?)}") ; x0dx0a 5、執行SQL語句 x0dx0a Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate x0dx0a 和execute x0dx0a 1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句 x0dx0a ,返回一個結果集(ResultSet)對象。 x0dx0a 2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或 x0dx0a DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等 x0dx0a 3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的 x0dx0a 語句。 x0dx0a 具體實現的代碼: x0dx0a ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; x0dx0a int rows = stmt.executeUpdate("INSERT INTO ...") ; x0dx0a boolean flag = stmt.execute(String sql) ; x0dx0a 6、處理結果 x0dx0a 兩種情況: x0dx0a 1、執行更新返回的是本次操作影響到的記錄數。 x0dx0a 2、執行查詢返回的結果是一個ResultSet對象。 x0dx0a • ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 x0dx0a 行中數據的訪問。 x0dx0a • 使用結果集(ResultSet)對象的訪問方法獲取數據: x0dx0a while(rs.next()){ x0dx0a String name = rs.getString("name") ; x0dx0a String pass = rs.getString(1) ; // 此方法比較高效 x0dx0a } x0dx0a (列是從左到右編號的,並且從列1開始) x0dx0a 7、關閉JDBC對象 x0dx0a 操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲 x0dx0a 明順序相反: x0dx0a 1、關閉記錄集 x0dx0a 2、關閉聲明 x0dx0a 3、關閉連接對象 x0dx0a if(rs != null){ // 關閉記錄集 x0dx0a try{ x0dx0a rs.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(stmt != null){ // 關閉聲明 x0dx0a try{ x0dx0a stmt.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a } x0dx0a if(conn != null){ // 關閉連接對象 x0dx0a try{ x0dx0a conn.close() ; x0dx0a }catch(SQLException e){ x0dx0a e.printStackTrace() ; x0dx0a } x0dx0a }
㈤ jdbc是什麼
JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API。JDBC API提供了一個標准介面,用於與任何關系資料庫管理系統(RDBMS)進行交互。
JDBC API包含以下主要組件:
1.JDBC Driver(JDBC驅動程序)
2.Connection(連接)
3.Statement(聲明)
4.ResultSet(結果集)
下面我們簡單的給大家介紹其組件。
JDBC驅動程序
JDBC驅動程序是一組Java類,它們實現JDBC介面以與特定資料庫進行交互。幾乎所有資料庫供應商(如MySQL,Oracle,Microsoft SQL Server)都提供JDBC驅動程序。例如,MySQL提供了一個名為MySQL Connection / J的JDBC驅動程序,它允許您通過標准JDBC API使用MySQL資料庫。
有三種類型的JDBC驅動程序,包括JDBC本機API驅動程序,JDBC-net驅動程序和JDBC驅動程序。
JDBC驅動程序是用純Java編寫的。它將JDBC調用轉換為特定於MySQL的調用,並將調用直接發送到特定資料庫。要使用JDBC驅動程序,您需要在應用程序中包含驅動程序JAR文件。MySQL Connector / J是JDBC驅動程序。
連接
JDBC的第一個也是最重要的組件是Connection對象。在Java應用程序中,首先載入JDBC驅動程序,然後建立與資料庫的連接。通過Connection對象,您可以與資料庫進行交互,例如,創建一個Statement來對表執行SQL查詢。您可以一次打開多個資料庫連接。
聲明
要執行SQL查詢,例如SELECT,INSERT,UPDATE,DELETE等,可以使用Statement對象。您可以通過Connection對象創建Statement 對象。JDBC提供了幾種類型的不同用途,如語句PreparedStatement,CallableStatement 。
結果集
從資料庫查詢數據後,您將獲得一個ResultSet對象。該ResultSet對象提供了一組API,允許您遍歷查詢結果。
使用JDBC的典型流程如下:
1.首先,載入JDBC驅動程序並創建與資料庫的連接。
2.然後,創建Statement並執行查詢以獲取ResultSet。
3.接下來,遍歷並處理ResultSet。
4.關閉ResultSet,Statement和Connection。
本篇文章我們向大家介紹了有關JDBC及其主要組件的一些基本信息:JDBC驅動程序,連接,語句和ResultSet。希望對需要的朋友有所幫助。
㈥ Java裡面的JDBC是什麼意思啊
Java資料庫連接是Java語言中用來規范客戶端程序如何來訪問資料庫的應用程序介面,提供了諸如查詢和更新資料庫中數據的方法。JDBC也是Sun Microsystems的商標。我們通常說的JDBC是面向關系型資料庫的。
這種類型的驅動把所有JDBC的調用傳遞給ODBC,再讓後者調用資料庫本地驅動代碼(也就是資料庫廠商提供的資料庫操作二進制代碼庫,例如Oracle中的oci.dll)。
API概述
JDBC API主要位於JDK中的java.sql包中(之後擴展的內容位於javax.sql包中),主要包括(斜體代表介面,需驅動程序提供者來具體實現):
DriverManager:負責載入各種不同驅動程序(Driver),並根據不同的請求,向調用者返回相應的資料庫連接(Connection)。Driver:驅動程序,會將自身載入到DriverManager中去,並處理相應的請求並返回相應的資料庫連接(Connection)。Connection:資料庫連接,負責與進行資料庫間通訊,SQL執行以及事務處理都是在某個特定Connection環境中進行的。
可以產生用以執行SQL的Statement。Statement:用以執行SQL查詢和更新(針對靜態SQL語句和單次執行)。PreparedStatement:用以執行包含動態參數的SQL查詢和更新(在伺服器端編譯,允許重復執行以提高效率)。CallableStatement:
用以調用資料庫中的存儲過程。SQLException:代表在資料庫連接的建立和關閉和SQL語句的執行過程中發生了例外情況(即錯誤)。
㈦ 什麼是JDBC
JDBC(Java DataBase Connectivity,java資料庫連接)是一種用於執行SQL語句的Java API,可以為多種關系資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。
JDBC提供了一種基準,據此可以構建更高級的工具和介面,使資料庫開發人員能夠編寫資料庫應用程序,同時,JDBC也是個商標名。
(7)java的jdbc擴展閱讀:
jdbc的組件框架:
JavaSoft提供三種JDBC產品組件,它們是Java開發工具包(JDK)的組成部份:JDBC驅動程序管理器、JDBC驅動程序測試工具包和JDBC-ODBC橋。
JDBC驅動程序管理器是JDBC體系結構的支柱。它實際上很小,也很簡單;其主要作用是把Java應用程序連接到正確的JDBC驅動程序上,然後即退出。
JDBC驅動程序測試工具包為使JDBC驅動程序運行您的程序提供一定的可信度。只有通過JDBC驅動程序測試的驅動程序才被認為是符合JDBC標准TM的。
JDBC-ODBC橋使ODBC驅動程序可被用作JDBC驅動程序。它的實現為JDBC的快速發展提供了一條途徑,其長遠目標提供一種訪問某些不常見的DBMS(如果對這些不常見的DBMS未實現JDBC)的方法。
參考資料來源:網路—jdbc