版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-7-11 1 2021-7-11 第 2 页 v深入了解深入了解JDBC访问各种数据库的驱动程序访问各种数据库的驱动程序 的模式的模式 v熟练掌握利用熟练掌握利用JDBC访问数据库的步骤访问数据库的步骤 v熟练掌握熟练掌握JDBC完成各种数据库操作完成各种数据库操作 v熟练掌握熟练掌握Java API来编写数据库应用程序来编写数据库应用程序 http:/ http:/ http:/ 本章学习要点本章学习要点 2021-7-11 3 2021-7-11 第 4 页 10.1.1 JBDC的用途 v JDBC即即Java 数据库连接数据库连接 (Java Database Connect
2、ivity)。 vJDBC为数据库及其工具开发人员提供了一个标准的为数据库及其工具开发人员提供了一个标准的API,使,使 他们能够用纯他们能够用纯 Java API 来编写数据库应用程序。来编写数据库应用程序。 v在在JDK的早期版本中,的早期版本中,JDBC只是一个可选部件,到了只是一个可选部件,到了 JDK1.1公布时,公布时,SQL类包(也就是类包(也就是JDBC API)就成为)就成为Java 语言的标准部件。语言的标准部件。 vJDBC扩展了扩展了Java的功能。例如,使用的功能。例如,使用Java和和JDBC API可以可以 发布含有发布含有Applet的网页,而该的网页,而该Ap
3、plet的信息可能来自远程数的信息可能来自远程数 据库。据库。 v使用使用JDBC,使信息的管理和传播变得容易和经济。,使信息的管理和传播变得容易和经济。 2021-7-11 第 5 页 10.1.2 从ODBC到JDBC v1. ODBC的结构模型的结构模型 ODBC的结构包括的结构包括4个主要部分:应用程序接口、驱动程序管个主要部分:应用程序接口、驱动程序管 理器、数据库驱动程序和数据源。理器、数据库驱动程序和数据源。 应用程序接口:屏蔽不同的应用程序接口:屏蔽不同的ODBC数据库驱动程序之间函数数据库驱动程序之间函数 调用的差别,为用户提供统一的调用的差别,为用户提供统一的SQL编程接口
4、。编程接口。 驱动程序管理器:为应用程序装载数据库驱动程序。驱动程序管理器:为应用程序装载数据库驱动程序。 数据库驱动程序:实现数据库驱动程序:实现ODBC的函数调用,提供对特定数据的函数调用,提供对特定数据 源的源的SQL请求。如果需要,数据库驱动程序将修改应用程序请求。如果需要,数据库驱动程序将修改应用程序 的请求,使得请求符合相关的的请求,使得请求符合相关的DBMS所支持的文法。所支持的文法。 数据源:由用户想要存取的数据以及与它相关的操作系统、数据源:由用户想要存取的数据以及与它相关的操作系统、 DBMS和用于访问和用于访问DBMS的网络平台组成。的网络平台组成。 2021-7-11
5、第 6 页 10.1.2 从ODBC到JDBC v2. JDBC的诞生的诞生 vJava 刚诞生时,由于没有一个刚诞生时,由于没有一个Java语言的数据库语言的数据库API,编,编 程人员不得不在程人员不得不在Java程序中加入程序中加入C语言的语言的ODBC函数调用。函数调用。 这就使这就使Java的很多优秀特性无法充分发挥,如平台无关性、的很多优秀特性无法充分发挥,如平台无关性、 面向对象特性等。随着面向对象特性等。随着Java语言访问数据库的应用越来越多,语言访问数据库的应用越来越多, 对对Java语言访问数据库语言访问数据库API接口的要求也越来越强烈。接口的要求也越来越强烈。 v由于
6、由于ODBC有其不足之处,如它不容易使用、没有面向对象有其不足之处,如它不容易使用、没有面向对象 的特性等,因而的特性等,因而SUN公司开发了一套公司开发了一套Java语言的数据库应用语言的数据库应用 程序开发接口。在程序开发接口。在JDK的早期版本中,的早期版本中,JDBC只是一个可选只是一个可选 部件,到部件,到JDK 1.1公布时,公布时,SQL类包(即类包(即JDBC API)就成为)就成为 Java语言的标准部件。语言的标准部件。 2021-7-11 第 7 页 10.1.3 JDBC的实现及其驱动程序 v1. 专用网络协议的驱动程序与数据库直接通信专用网络协议的驱动程序与数据库直接
7、通信 v这种实现方法是直接使用数据库厂商提供的、用专用网络这种实现方法是直接使用数据库厂商提供的、用专用网络 协议创建的驱动程序,通过它可以直接将协议创建的驱动程序,通过它可以直接将JDBC API调用转调用转 换为网络调用,其结构如图所示。换为网络调用,其结构如图所示。 v这种调用方式一般性能比较好,而且也是最简单实用的方这种调用方式一般性能比较好,而且也是最简单实用的方 法。因为它不需要安装其他的库程序或者中间件,几乎所有法。因为它不需要安装其他的库程序或者中间件,几乎所有 的数据库厂商都为他们的数据库提供了这种的数据库厂商都为他们的数据库提供了这种JDBC驱动程序,驱动程序, 也可以从第
8、三方厂商获得这些驱动程序。也可以从第三方厂商获得这些驱动程序。 v从网址从网址http:/ 以看到所有可用驱动程序的清单。以看到所有可用驱动程序的清单。 应用程序JDBC API驱动程序数据源 2021-7-11 第 8 页 10.1.3 JDBC的实现及其驱动程序 v2. 通过通过JDBC-ODBC桥与桥与ODBC数据源通信数据源通信 v作为作为JDBC的一部分,的一部分,SUN公司还发行了一个用于访问公司还发行了一个用于访问ODBC数数 据源的驱动程序,称为据源的驱动程序,称为JDBC-ODBC桥接器。它是用桥接器。它是用 jdbcodbc.c1ass和一个用于访问和一个用于访问ODBC驱
9、动程序的本地库来实现驱动程序的本地库来实现 的。该本地库是一个动态连接库的。该本地库是一个动态连接库DLL(JDBCODBC.DLL)。)。 v这个驱动程序把这个驱动程序把JDBC的方法映射到的方法映射到ODBC调用上,这样,调用上,这样, JDBC就可以和任何可用的就可以和任何可用的ODBC驱动程序进行交互。它使驱动程序进行交互。它使 JDBC目前有能力访问几乎所有的数据库。目前有能力访问几乎所有的数据库。 应用程序 JDBC APIJDBC-ODBCODBC层ODBC API 数据源 2021-7-11 第 9 页 10.1.3 JDBC的实现及其驱动程序 v3. 通过部分专用的驱动程序与
10、数据库通信通过部分专用的驱动程序与数据库通信 v这种方式的特点是将这种方式的特点是将JDBC数据库调用直接翻译为厂商专用数据库调用直接翻译为厂商专用 的的API,与上述的,与上述的JDBC-ODBC桥接器相比,它的执行更有桥接器相比,它的执行更有 效、更快捷,其模式如图所示。效、更快捷,其模式如图所示。 应用程序JDBC API驱动程序数据源专用API v4. 这种这种JDBC是纯是纯Java的,直接与数据库实例交互。的,直接与数据库实例交互。 Java API-JDBC-数据库协议-数据库 2021-7-11 10 2021-7-11 第 11 页 10.3 JDBC API 10.3 JD
11、BC API介绍介绍 v JDBC API所有的类和接口都集中在所有的类和接口都集中在Java.sql和和 Javax.sql这两个包中。这两个包中。 v Java.sql 这个包中包含的类和接口采用的是传统的这个包中包含的类和接口采用的是传统的 C/S体系结构。它的功能主要针对的是基本数据库编体系结构。它的功能主要针对的是基本数据库编 程服务,如生成连接、执行语句以及准备语句和运程服务,如生成连接、执行语句以及准备语句和运 行批处理查询等。也有一些其它的高级功能。行批处理查询等。也有一些其它的高级功能。 vJavax.sql 它与它与Java.sql相比,引入了一些相比,引入了一些JDBC编
12、程编程 方面的主要的体系结构的改变,并且为连接管理、方面的主要的体系结构的改变,并且为连接管理、 分布式事务处理和连接提供了更好的抽象。同时,分布式事务处理和连接提供了更好的抽象。同时, 这个包还引入了容器管理的连接缓冲池、分布式事这个包还引入了容器管理的连接缓冲池、分布式事 务处理和行集(务处理和行集(row set)等机制。)等机制。 2021-7-11 第 12 页 10.3 JDBC API10.3 JDBC API介绍介绍 v编写简单编写简单JDBC程序的基本步骤:程序的基本步骤: 2021-7-11 第 13 页 10.3.1 10.3.1 连接管理连接管理 要编写一个要编写一个J
13、DBC程序,首先应该将它与数据库进行连接。在程序,首先应该将它与数据库进行连接。在 连接管理这一组中,主要有下面连接管理这一组中,主要有下面2个类和个类和2个接口。个接口。 java.sql.DriverManager 这个类提供了用于管理一个或多个数这个类提供了用于管理一个或多个数 据库驱动程序。每个驱动程序都可以连接特定的数据库。据库驱动程序。每个驱动程序都可以连接特定的数据库。 java.sql.DriverPropertyInfo 由于每个数据库都需要一组属性由于每个数据库都需要一组属性 以获得一条连接,这个类可用于查找连接所需要的属性。以获得一条连接,这个类可用于查找连接所需要的属性
14、。 java.sql.Driver 这是一个抽象了厂商专用连接协议的接口,可这是一个抽象了厂商专用连接协议的接口,可 从数据库的生产厂商或第三方厂商获得该接口的实现。从数据库的生产厂商或第三方厂商获得该接口的实现。 java.sql.Connection 这个接口抽象了大部分与数据库的交互活这个接口抽象了大部分与数据库的交互活 动。通过一条连接,可以向数据库发送动。通过一条连接,可以向数据库发送SQL语句以及读取执语句以及读取执 行的结果。行的结果。 2021-7-11 第 14 页 10.3.2 数据库访问 当建立连接后,可以发送当建立连接后,可以发送SQL语句访问数据库和读取访问的语句访问
15、数据库和读取访问的 结果。结果。 java.sql.Statement 这个接口可在基层连接上执行这个接口可在基层连接上执行SQL语语 句并访问返回结果。句并访问返回结果。 java.sql.PreparedStatement 这是这是java.sql.Statement接接 口的一个变种,可以使用参数化口的一个变种,可以使用参数化SQL语句。语句。 java.sql.CallableStatement 这个接口可运行存储过程。这个接口可运行存储过程。 java.sql.ResultSet 这个接口抽象了运行这个接口抽象了运行SQL select语句的语句的 结果。它提供了访问结果的方法。可以
16、使用这个接口来访问结果。它提供了访问结果的方法。可以使用这个接口来访问 各记录中不同的字段。各记录中不同的字段。 2021-7-11 15 2021-7-11 第 16 页 10.4.1 JDBC API10.4.1 JDBC API工具工具 v1. 注册数据库的驱动程序(注册数据库的驱动程序(driver) vDriverManager.registerDriver():该方法用于为:该方法用于为DriverManager 对象注册特定的对象注册特定的Driver对象。对象。DriverManager类的方法利用已注类的方法利用已注 册的驱动器表,确定是否可以连接到某数据库的册的驱动器表,确
17、定是否可以连接到某数据库的URL地址。地址。 vClass.forName:通过调用方法:通过调用方法 Class.forName显式地加载驱动显式地加载驱动 程序类。由于这个调用与外部设置无关,因此推荐使用这种加程序类。由于这个调用与外部设置无关,因此推荐使用这种加 载驱动程序的方法。以下代码加载类载驱动程序的方法。以下代码加载类 acme.db.Driver: Class.forName(acme.db.Driver); v加载驱动程序的第一种方法需要持久的预设环境。如果对这一加载驱动程序的第一种方法需要持久的预设环境。如果对这一 点不能保证,则调用方法点不能保证,则调用方法 Class.
18、forName 显式地加载每个驱动显式地加载每个驱动 程序就显得更为安全。这也是引入特定驱动程序的方法。程序就显得更为安全。这也是引入特定驱动程序的方法。 2021-7-11 第 17 页 10.4.1 JDBC API10.4.1 JDBC API工具工具 v2. 建立数据库连接的工具建立数据库连接的工具 ( DriverManager .getConnection) vDriverManager实现了建立数据库连接的3个 getConnection()方法。每个方法都返回一个 Connection对象,但它们接收的参数不同。 v getConnection(String url)方法只接收
19、数据库URL作 为参数,用当前的Driver对象或已注册的Driver对象 表中某个对象连接指定的数据库。该方法中假定构 造数据库连接时不需要用户名、口令或其他数据库 属性。 2021-7-11 第 18 页 10.4.1 JDBC API10.4.1 JDBC API工具工具 v getConnection(String url, Properties info)方法接收两 个参数:数据库的URL和连接数据库所需各种属性 的Properties对象。第二个参数必须是Properties对象, 它包含连接指定数据库所需的所有属性项。 v getConnection(String url, St
20、ring user, String password)方法接收3个参数,第一个是数据库的 URL,第二个说明连接数据所用的用户名;第三个 是DriverManager连接数据库时所用的用户口令。 2021-7-11 第 19 页 10.4.1 JDBC API10.4.1 JDBC API工具工具 v3. Connection对象对象 vConnection对象是用于连接数据库和Java应用程序的主要对 象。利用它可以创建所有的Statement对象,这些Statement对 象用于执行SQL语句,并从数据库中读取结果。Driver对象 的connect()方法和DrvierManager对象
21、的getConnection()方法 都可以创建应用程序中的Connection对象。 vConnection对象提供应用程序与数据库的静态连接。除非调 用Connection对象的close()方法,或者删除Connection对象才 断开数据库连接,否则保持有效连接。如果数据库限制连接 的数目,使用静态连接过多就会存在一些问题。这时,最好 只在需要时才连接数据库,并在操作完毕后断开数据库连接。 2021-7-11 第 20 页 10.4.1 JDBC API10.4.1 JDBC API工具工具 v4. Statement对象对象 v连接数据库后,要执行SQL语句,得到数据库的返回结果,必
22、 须使用Statement对象。Statement对象与Connection对象一样不 能直接创建,必须通过Connection对象的createStatement()方法 返回个Statement对象。 v利用Statement对象执行SQL查询。静态SQL语句的执行不需要 接收任何参数。而动态SQL语句只有得到指定数目的参数后才 是完整的SQL语句。静态SQL可以是select语句、delete语句、 update语句、insert语句,甚至可以是存储过程的调用语句。 update、delete和insert语句不返回任何结果,只修改数据库中 的数据。select语句一般都要返回数据库中的
23、数据。 vStatement对象的主要方法如表10.1所示。 2021-7-11 第 21 页 10.4.2 10.4.2 连接数据库连接数据库 v介绍前两种方法:一种是通过JDBC驱动程序,另一种是通 过JDBC-ODBC桥+ODBC驱动与数据库进行连接。以下将用 两个实例来详细说明如何运用这两种方法与数据库通信。 v1. 使用使用JDBC驱动程序连接驱动程序连接PointBase数据库数据库 v下面这个例子是在Windows 操作系统下,使用PointBase提 供的JDBC驱动连接数据库。 v【例10.2】 首先,安装JDBC驱动程序,把含有驱动程序 的.zip或者.jar文件放到CLA
24、SSPATH下。 v然后,创建一个新的数据库:运行PointBase,打开DBA菜 单,选择CreateCreate New Database命令,如图10.5所示, 把这个新建的数据库取名为DoMiSo。 2021-7-11 第 22 页 10.4.2 10.4.2 连接数据库连接数据库 2021-7-11 第 23 页 10.4.2 10.4.2 连接数据库连接数据库 v准备工作已基本完成,运行下面的程序就可以与PointBase 下的DoMiSo数据库进行连接了。 程序的代码 2021-7-11 第 24 页 10.4.2 10.4.2 连接数据库连接数据库 v2. JDBC-ODBC桥
25、桥+ODBC驱动连接驱动连接Access2000数据数据 库库 v在Java的开发工具包中一般都会自带JDBC-ODBC桥。在这 个例子中,我们使用的操作系统是Windows XP,此系统下 Access的ODBC驱动已安装配置完备。 v【例10.3】 首先,创建数据库。运行Microsoft Access,创 建一个新的数据库,取名为Connect。 v然后,创建数据源。打开控制面板,单击“管理工 具”“数据源(ODBC)”图标,打开“ODBC数据源管理 器”对话框,单击“添加”按钮后弹出“创建新数据源”对 话框,如图所示。 2021-7-11 第 25 页 10.4.2 10.4.2 连接
26、数据库连接数据库 v在图中的在图中的“名称名称”列表框中选择列表框中选择“Driver do Microsoft Access”选项,单击选项,单击“完成完成”后弹出对话框。后弹出对话框。 2021-7-11 第 26 页 10.4.2 10.4.2 连接数据库连接数据库 v这个新的数据源命名为这个新的数据源命名为Connection,然后单击,然后单击“选择选择”按钮,按钮, 找到找到Connect.mdb,单击,单击“确定确定”按钮,至此已成功地创建按钮,至此已成功地创建 数据源。数据源。 程序代码程序代码 2021-7-11 第 27 页 10.4.2 10.4.2 连接数据库连接数据库
27、 vConnectAccess连接数据源的执行结果连接数据源的执行结果 2021-7-11 第 28 页 10.4.2 10.4.2 连接数据库连接数据库 v3. 动态选择加载驱动程序的类型动态选择加载驱动程序的类型 v以上所举的两个例子都是在程序代码中预先指定了所要加以上所举的两个例子都是在程序代码中预先指定了所要加 载的驱动程序以及要连接的数据库等信息。实际上,可以载的驱动程序以及要连接的数据库等信息。实际上,可以 尝试一种更一般的形式,即不在程序中固定使用哪一种驱尝试一种更一般的形式,即不在程序中固定使用哪一种驱 动程序,也不固定动程序,也不固定URL等,而是提供一个可视化的用户界等,而
28、是提供一个可视化的用户界 面,让用户通过选择不同的面,让用户通过选择不同的Driver和和URL来连接不同的数来连接不同的数 据库。据库。 v程序代码程序代码: 2021-7-11 第 29 页 10.4.2 10.4.2 连接数据库连接数据库 v连接连接SQL Server数据库的有关信息数据库的有关信息 2021-7-11 第 30 页 10.4.2 10.4.2 连接数据库连接数据库 v连接因特网上另一台机器上的连接因特网上另一台机器上的Oracle数据库的结果数据库的结果 2021-7-11 第 31 页 10.5 10.5 小小 结结 vJDBC为在为在Java中开发数据库应用提供了
29、一个良好的工具,中开发数据库应用提供了一个良好的工具, 有了有了JDBC API,就不必为访问每一种数据库各写一个程序,就不必为访问每一种数据库各写一个程序, 也无须担忧要为不同的平台编写不同的应用程序。也无须担忧要为不同的平台编写不同的应用程序。 vJDBC也扩展了也扩展了Java的网络功能。例如,使用的网络功能。例如,使用Java的网络功的网络功 能,再加上能,再加上JDBC,无论何时何地都可能访问远程数据库。,无论何时何地都可能访问远程数据库。 vJDBC访问数据库的方式有多种,粗略划分可分为两类:利访问数据库的方式有多种,粗略划分可分为两类:利 用数据库厂家的驱动程序和利用用数据库厂家的驱动程序和利用ODBC;若利用前者,可到;若利用前者,可到 SUN公司的网站或数据库厂商的网站上下载驱动程序,这些公司的网站或数据库厂商的网站上下载驱动程序,这些 驱动程序已实现为驱动程序已实现为Java API访问数据库的协议的接口和抽象访问数据库的协议的接口和抽象 类;若利用后者,在类;若利用后者,在Windows平台已安装好了平台已安装好了ODBC组件,组件, 并提供了相应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津市红桥区2025-2026学年初三下学期考试语文试题含解析
- 山东省临沭县青云镇中心中学2026届初三年级第二学期调研考试语文试题试卷含解析
- 潜江市2026年初三3月质量检测试题英语试题含解析
- 江苏省无锡市经开区2026年统考模拟语文试题试卷含解析
- (正式版)DB37∕T 1519-2010 《无公害食品 塑料大棚西瓜生产技术规程》
- 卵巢癌患者的呼吸管理护理
- Unit 2 Exploring English Period 2 教学设计(高中英语)
- 2026年通信基站抱杆安装专项方案
- 2026年可降解塑料助剂市场开发与推广方案
- 2026年医药制造行业洁净厂房智慧能源管理项目可行性报告
- 输尿管囊肿超声诊断与评估
- 学堂在线 雨课堂 学堂云 遥测原理 期末考试答案
- 残疾等级评定培训课件
- 瑜伽康复墙培训课件
- 法院司法礼仪培训课件
- 2025年高中生物学知识竞赛试题及答案
- 业财融合:提升企业成本控制效率的实践策略
- 小学数学国培二次培训
- 2025年衡阳市商品房买卖合同(正式版本)
- 烹饪工艺学(第2版) 课件 单元9调色和调香工艺
- 银屑病的全英文
评论
0/150
提交评论