亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JDBC一(web基礎學習筆記七)

2019-11-14 22:41:48
字體:
來源:轉載
供稿:網友
JDBC一(web基礎學習筆記七)一、JDBC

java數據庫的連接技術(Java DataBase Connectivity),能實現Java程序以各種數據庫的訪問

由一組使用Java語言編寫的類和接口(JDBC API)組成,它java.sql以及javax.sql中

二、JDBC 原理以及驅動程序的分類2.1、JDBC 原理

原來的 SUN 公司(現在是Oracle 公司)在開發JDBC API 時,將這些接口和類放在了兩個包中,java.sql 包和javax.sql 包中。而主要的接口和類都是在java.sql 包中,javax 包叫做擴展包,javax.sql 包中有一些關于數據源、連接池和其他的一些擴展的接口和類。JDBC 中最常用的幾個接口和類是 DriverManager 類、Connection 接口、Statement 接口、ResultSet 接口,DriverManager 這個類是管理驅動程序的,可以獲得數據庫連接對象。JDBC的驅動程序是實現了JDBC API 接口的類,由數據庫廠商來提供,所以我們在使用JDBC 連接數據庫的時候,需要導入數據庫的驅動包,連接不同的數據庫,需要導入不同的包。而我們在編寫Java 應用程序時,基本上不用太關心這些包中的類。我們只需要用JDBC 的接口進行編程就可以了,也就是java.sql 包和javax.sql 包中的接口。這些接口的對象都是通過其他對象來獲得的,我們不需要通過new 來創建它們。而這些對象的具體實現都是在驅動程序中實現的,是驅動程序類的對象。

2.2、驅動程序分類
  1. JDBC 驅動有四種,常用的JDBC 驅動有兩種。在個人開發與測試中,可以使用JDBC-ODBC橋連方式,
  2. 在生產型開發中,推薦使用純Java 驅動方式。
2.3、通過JDBC-ODBC 橋

通過JDBC-ODBC 橋,開發者可以使用JDBC 來訪問一個ODBC 數據源。JDBC-ODBC 橋驅動程序為Java 應用程序提供了一種把JDBC 調用映射為ODBC 調用的方法。只要本地機裝有相關的ODBC 驅動,那么采用JDBC-ODBC 橋幾乎可以訪問所有的數據庫。但是,由于JDBC-ODBC 先調用ODBC 再由ODBC 去調用本地數據庫接口來訪問數據庫。所以,執行效率比較低,對于那些大數據量存取的應用是不適合的。而且,這種方法要求客戶端必須安裝ODBC 驅動,所以對于基于internet 和intranet 的應用也是不合適的。因為,你不可能要求所有客戶都能找到ODBC 驅動。

使用JDBC-ODBC 進行橋連步驟如下:

1、配置數據源:控制面板→管理工具→ODBC 數據源→系統DSN2、編程,通過橋連方式與數據庫建立連接

2.4、純Java 驅動

純Java 驅動直接把JDBC 調用轉換為符合相關數據庫系統規范的請求。用這種驅動編寫的應用程序可以直接和數據庫服務器通訊。這種類型的驅動完全由Java 實現,因此實現了平臺獨立性。

由于純Java 驅動不需要先把JDBC 的調用傳給ODBC 或本地數據庫接口或者是中間層服務器,而是將JDBC 調用直接轉換為DBMS 所使用的網絡協議,所以它的執行效率是非常高的。這種驅動程序可以動態的被下載。但是它有一個缺點,就是對于不同的數據庫,需要下載不同的驅動程序。

使用純Java 驅動方式進行直連的步驟:1、下載數據庫廠商提供的驅動程序包2、將驅動程序包引入工程中3、編程,通過純Java 驅動方式與數據庫建立連接

三、JDBC 編程步驟

要使用 JDBC 連接和操作數據庫,有一套固定的步驟。依照這些步驟,可以保證你正確的連接到數據庫并且操作它。

  • 第一步是注冊驅動,Class.forName()方法將驅動程序類加載到虛擬機的內存中。
  • 第二步是獲得數據庫的連接,是使用DriverManager 類的getConnection()方法來獲得的,同時需要在參數中給出連接數據庫的URL 和用戶名、密碼。這一步將得到一個數據 庫連接對象,是Connection 類型的。
  • 第三步是用數據庫連接對象獲得一個Statement 對象,這個對象可以用來執行SQL 語句。
  • 第四步就是用Statement 對象執行SQL 語句了。其實,說是用Statement 對象來執行SQL還不夠準確,因為SQL 語句只能被數據庫來執行,Statement 只是負責發送SQL 和接收結果。但是不管是誰在執行,這一步都將執行SQL 語句。
  • 第五步是處理執行結果,如果是更新的操作,可能是判斷一下是否更新成功,如果是查詢的操作,可能就是輸出查詢結果等等。
  • 最后,一定要記得釋放數據庫的連接。因為數據庫的連接是一個重量級的對象。如果是多用戶并發訪問的應用程序,比如B/S 應用程序,每個用戶都是只連接但不釋放,將不斷耗費服務器的資源直至服務器down 機。
四、JDBC API 介紹

JDBC 的API 中主要定義了一些連接和操作數據庫的接口,而具體的類卻很少。這是因為,在開發Java 的API 的時候,不可能讓JDBC 連接某個具體的數據庫,而只能確定一組規范。而連接具體數據庫的實現,應該由數據庫的廠商來做。通過統一的JDBC 規范,使得我們在連接各種數據庫的時候,編碼的方式是一樣的,這樣更利于代碼的復用和移植.

從上面JDBC 編程步驟中可以看出,使用JDBC 操作數據庫需要依賴幾個主要的JDBC API,接下來介紹這幾個JDBC API 的使用

4.1、DriverManager 類是用來管理數據庫驅動的

java.sql 包中大多數都是接口,這是為數不多的類之一。它是非常常用的一個類,最主要的功能就是獲得數據庫的連接,它定義了三個連接數據庫的方法,差別在參數的數量上。三個參數的getConnection()方法是最常用的。三個參數分別是數據庫的URL、用戶名和密碼。

返回類型方法簽名說明
static ConnectiongetConnection(String url)

試圖建立到給定數據庫URL 的連接

static Connection

getConnection(String url,PRoperties info)

試圖建立到給定數據庫URL 的連接

static Connection

getConnection(String url,String user, String passWord)

試圖建立到給定數據庫URL 的連接

4.2、java.sql.Connection 接口表示應用程序與數據庫的連接對象

由數據庫廠商來實現,獲得Connection 對象的方法是通過DriverManager 類的getConnection()方法。通過Connection 對象, 我們可以獲得操作數據庫的Statement 、PreparedStatement ,CallableStatement 等對象。這些對象是用來執行SQL 和存儲過程

4.3、Statement 接口的對象是用來執行SQL 語句的,而且是執行靜態的SQL 語句

Statement 接口的對象是用來執行SQL 語句的,而且是執行靜態的SQL 語句。所謂的靜態SQL 語句,是指SQL 語句由一個固定的SQL 字符串確定,運行期不能修改參數

返回類型方法簽名說明
int

executeUpdate(String sql)

執行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或DELETE語句,或者不返回任何內容的 SQL 語句(如 SQL DDL 語句)

ResultSet

executeQuery(String sql)

執行給定的 SQL 語句,該語句返回單個 ResultSet 對象

void

close()

立即釋放此 Statement 對象的數據庫和 JDBC 資源,而不是等待該對象自動關閉時發生此操作

4.4、ResultSet 接口用來表示查詢結果集

當我們調用Statement 的executeQuery()方法時,就會得到一個ResultSet 的對象。ResultSet 對象中包含根據查詢語句查詢出來的一個結果集,但是,實際上這些內容還是在數據庫當中,還并沒有真正的取出到虛擬機的內存中。ResultSet 其實是保存了一個指向其當前數據行的游標,我們需要使用ResultSet 的方法讓游標一行一行的向下移動,然后獲取每一行的數據,所以在操作ResultSet 對象期間,數據庫連接不能關閉。

返回類型方法簽名說明
booleannext()將CURSOR(游標)從當前位置向前移一行
Type

getType(String columnLabel)

根據數據庫表的列名得到指定列的值
Type

getType(intcolumnIndex)

根據列的序號得到指定列的值,第一列的序號是1。
voidclose()

立即釋放此 ResultSet 對象的數據庫和 JDBC 資源,而不是等待該對象自動關閉時發生此操作

五、java.sql5.1、java.sql描述

編程語言訪問并處理存儲在數據源(通常是一個關系數據庫)中的數據的 API。此 API 包括一個框架,憑借此框架可以動態地安裝不同驅動程序來訪問不同數據源。盡管 JDBCTM API 主要用于將 SQL 語句傳遞給數據庫,但它還可以用于以表格方式從任何數據源中讀寫數據。通過接口的 javax.sql.RowSet 組可以使用的 reader/writer 實用程序,可以被定制以使用和更新來自電子表格、純文本文件或其他任何表格式數據源的數據

5.2、java.sql內容

java.sql 包中包含用于以下方面的 API:

  • 通過 DriverManager 實用程序建立與數據庫的連接
    • DriverManager 類:建立與驅動程序的連接
    • SQLPermission 類:當代碼在 Security Manager(比如 applet)中運行時提供權限,試圖通過 DriverManager 設置一個記錄流
    • Driver 接口:提供用來注冊和連接基于 JDBC 技術(“JDBC 驅動程序”)的驅動程序的 API,通常僅由 DriverManager 類使用
    • DriverPropertyInfo 類:提供 JDBC 驅動程序的屬性,不是供一般用戶使用的
  • 向數據庫發送 SQL 語句
    • Statement:用于發送基本 SQL 語句
    • PreparedStatement:用于發送準備好的語句或基本 SQL 語句(派生自 Statement
    • CallableStatement:用于調用數據庫存儲過程(派生自 PreparedStatement
    • Connection 接口:提供創建語句以及管理連接及其屬性的方法
    • Savepoint:在事務中提供保存點
  • 獲取和更新查詢的結果
    • ResultSet 接口
  • SQL 類型到 Java 編程語言中的類和接口的標準映射關系
    • Array 接口:SQL ARRAY 的映射關系
    • Blob 接口:SQL BLOB 的映射關系
    • Clob 接口:SQL CLOB 的映射關系
    • Date 類:SQL DATE 的映射關系
    • NClob 接口:SQL NCLOB 的映射關系
    • Ref 接口:SQL REF 的映射關系
    • RowId 接口:SQL ROWID 的映射關系
    • Struct 接口:SQL STRUCT 的映射關系
    • SQLxml 接口:SQL XML 的映射關系
    • Time 類:SQL TIME 的映射關系
    • Timestamp 類:SQL TIMESTAMP 的映射關系
    • Types 類:提供用于 SQL 類型的常量
  • 自定義映射 SQL 用戶定義類型 (UDT) 到 Java 編程語言中的類
    • SQLData 接口:指定 UDT 到此類的一個實例的映射關系
    • SQLInput 接口:提供用來從流中讀取 UDT 屬性的方法
    • SQLOutput 接口:提供用來將 UDT 屬性寫回流中的方法
  • 元數據
    • DatabaseMetaData 接口:提供有關數據庫的信息
    • ResultSetMetaData 接口:提供有關 ResultSet 對象的列的信息
    • ParameterMetaData 接口:提供有關 PreparedStatement 命令的參數的信息
  • 異常
    • SQLException:由大多數方法在訪問數據出問題時拋出,以及因為其他原因由其他一些方法拋出
    • SQLWarning:為了指示一個警告而拋出
    • DataTruncation:為了指示數據可能已經被截斷而拋出
    • BatchUpdateException:為了指示并不是批量更新中的所有命令都成功執行而拋出
六、JDBC 4.0

JDBC 4.0 API 中引入的 java.sqljavax.sql 特性

  • 自動 java.sql.Driver 發現:不再需要通過 Class.forName 來加載 java.sql.Driver
  • 添加了國家字符集 (National Character Set) 支持
  • 為 SQL:2003 XML 數據類型添加的支持
  • SQLException 增強:為原因鏈添加的支持;為公用 SQLState 類值代碼添加新 SQLException
  • 增強的 Blob/Clob 功能:提供創建和釋放 Blob/Clob 實例以及為了提高可訪問性所添加的一些其他方法
  • 為訪問 SQL ROWID 添加的支持
  • 添加的支持,允許 JDBC 應用程序訪問已被供應商包裝的 JDBC 資源實例,通常在一個應用程序服務器或連接池環境中。
  • 當與 PooledConnection 關聯的 PreparedStatement 已關閉或驅動程序確定為無效時要通知的可用性

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
777午夜精品福利在线观看| 精品日本美女福利在线观看| 亚洲综合成人婷婷小说| 影音先锋欧美精品| 欧美成人在线网站| 国产亚洲综合久久| 国产日韩换脸av一区在线观看| 国产精品免费久久久久影院| 亚洲男人的天堂在线播放| 国产日韩精品入口| 最近2019年中文视频免费在线观看| 欧美精品久久久久久久久| 欧美高清理论片| 亚洲一区二区久久久| 亚洲成人免费网站| xvideos成人免费中文版| 欧美日韩国产精品专区| 97av在线视频免费播放| 欧美激情第三页| 久久精品免费播放| 欧美国产日韩免费| 久久理论片午夜琪琪电影网| 国产精品69久久久久| 97视频在线观看视频免费视频| 92福利视频午夜1000合集在线观看| 亚洲国产精品99久久| 成人黄色短视频在线观看| 欧美成人午夜激情视频| 亚洲香蕉av在线一区二区三区| 欧美日韩激情美女| 国产精品678| 日韩av电影中文字幕| 91色在线观看| 亚洲综合视频1区| 国产精品网站视频| 国产精品美乳一区二区免费| 亚洲精品视频中文字幕| 亚洲偷熟乱区亚洲香蕉av| 亚洲香蕉av在线一区二区三区| 欧美精品免费播放| 日本久久精品视频| 欧美一区二区三区四区在线| 精品女厕一区二区三区| 亚州精品天堂中文字幕| 国产精品麻豆va在线播放| 日韩美女视频在线观看| 国产精品美女www爽爽爽视频| 自拍偷拍亚洲精品| 欧美日韩在线另类| 少妇高潮久久77777| 国产深夜精品福利| 亚洲成人动漫在线播放| 国产精品网址在线| 精品成人69xx.xyz| 久久伊人91精品综合网站| 欧美精品日韩www.p站| 亚洲热线99精品视频| 国产精品久久色| 国产精品无码专区在线观看| 91亚洲精品久久久| 色婷婷av一区二区三区久久| 欧美日韩一区二区在线播放| 这里只有精品视频| 91在线精品播放| 成人在线激情视频| 亚洲欧洲国产伦综合| 欧美在线视频导航| 久久亚洲精品国产亚洲老地址| 26uuu国产精品视频| 高清欧美性猛交| 欧美韩国理论所午夜片917电影| 亚洲欧美日韩精品久久亚洲区| 久久久久九九九九| 欧美一级视频免费在线观看| 久久亚洲精品一区| 国产剧情久久久久久| 国产精品视频精品| 亚洲精品99久久久久中文字幕| 国模精品系列视频| 久久av资源网站| 综合136福利视频在线| 国产精品高潮呻吟久久av野狼| 欧美精品一本久久男人的天堂| 一区三区二区视频| 亚洲香蕉成视频在线观看| 亚洲精品免费一区二区三区| 国产欧美日韩免费看aⅴ视频| 日韩有码视频在线| 欧美亚洲国产精品| 免费97视频在线精品国自产拍| 欧美精品成人91久久久久久久| 国产精品999| 狠狠综合久久av一区二区小说| 日韩成人黄色av| 日韩69视频在线观看| 亚洲最大福利视频| 亚洲第一精品久久忘忧草社区| 456国产精品| www日韩中文字幕在线看| 欧美日韩精品在线视频| 成人国产在线激情| 日韩免费在线免费观看| 亚洲国产精品va在线观看黑人| 国产成人免费av| 欧美激情2020午夜免费观看| 日韩精品在线视频美女| 日韩av片电影专区| 日本韩国在线不卡| 狠狠躁夜夜躁人人躁婷婷91| 亚洲天堂一区二区三区| 欧美综合在线第二页| 国产精品永久免费视频| 日韩福利视频在线观看| 91亚洲精品久久久| 911国产网站尤物在线观看| 欧美一级大片在线免费观看| 欧美精品少妇videofree| 福利视频一区二区| 欧美一级bbbbb性bbbb喷潮片| 孩xxxx性bbbb欧美| 亚洲视频日韩精品| 综合网日日天干夜夜久久| 欧美精品久久久久久久久| 久久av在线播放| 成人免费看吃奶视频网站| 日韩免费观看在线观看| 欧美又大粗又爽又黄大片视频| 91久久精品久久国产性色也91| 日韩欧美aⅴ综合网站发布| 久久久精品中文字幕| 亚洲精品在线观看www| 性色av香蕉一区二区| 精品国产福利视频| 精品视频在线播放免| 97超级碰碰人国产在线观看| 久久久精品久久| 亚洲免费电影在线观看| 久久久久久91| 91禁国产网站| 日韩欧美中文免费| 亚洲欧美国产精品va在线观看| 国产有码在线一区二区视频| 国产精品久久久久久久久久99| 欧美日韩激情视频8区| 国产91精品黑色丝袜高跟鞋| 青青在线视频一区二区三区| 这里只有精品在线播放| 日日骚av一区| 亚洲欧美精品在线| 日韩电影网在线| 中文字幕免费精品一区| 日韩精品中文字幕久久臀| 精品国产91久久久久久| 日韩在线精品一区| 国产精品中文字幕在线观看| 国产一区二区在线播放| 午夜精品久久久久久久男人的天堂| 精品五月天久久| 亚洲精品一区二三区不卡| 91精品久久久久久久久中文字幕| 欧美亚洲国产视频| www.日韩欧美| 欧美日韩国产综合视频在线观看中文| 亚洲国产欧美一区二区三区久久|