Java与数据库的连接.ppt
《Java与数据库的连接.ppt》由会员分享,可在线阅读,更多相关《Java与数据库的连接.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JDBC 简介简介v数据库的应用目前已经非常普遍,在应用数据库的应用目前已经非常普遍,在应用程序的开发过程中,经常会涉及到访问数程序的开发过程中,经常会涉及到访问数据库。据库。Java语言为访问数据库提供了方便语言为访问数据库提供了方便的技术。的技术。vJ a v a 使 用使 用 J D B C ( J a v a D a t a b a s e Connectivity)技术进行数据库的访问。技术进行数据库的访问。Java应用程序通过应用程序通过JDBC API和和JDBC驱动驱动程序管理器程序管理器进行通信。进行通信。JDBC的诞生的诞生v从从ODBC到到JDBCuODBC(Open D
2、ataBase Connectivity),是一种用来在,是一种用来在关系数据库以及非关系数据库管理系统中存取数据,关系数据库以及非关系数据库管理系统中存取数据,用用C语言语言实现的标准应用程序接口。实现的标准应用程序接口。u其主要结构:其主要结构:应用程序接口应用程序接口、驱动程序管理器驱动程序管理器、数据数据库驱动程序库驱动程序和和数据源数据源。v JDBC的诞生的诞生u 以前由于没有一个以前由于没有一个Java语言的数据库语言的数据库API,编,编程人员不得不在程人员不得不在Java程序中加入程序中加入C语言的语言的ODBC函数调用,从而使函数调用,从而使Java的很多优秀特性的很多优秀
3、特性无法充分发挥无法充分发挥u ODBC具有不易使用,非面向对象等缺点具有不易使用,非面向对象等缺点u为了充分发挥为了充分发挥java语言的特性,迎合数据库开语言的特性,迎合数据库开发的需求,发的需求,sun开发了一套开发了一套java语言的数据库语言的数据库应用程序开发接口和类,即应用程序开发接口和类,即JDBC。它在。它在Java程序中实现数据库操作功能并简化操作过程。程序中实现数据库操作功能并简化操作过程。 u JDBC为数据库及其工具的开发人员提供了为数据库及其工具的开发人员提供了一个标准的一个标准的API,使他们能够用纯,使他们能够用纯Java API编编写数据库应用程序写数据库应用
4、程序u JDBC支持基本支持基本SQL语句,提供多样化的数语句,提供多样化的数据库连接方式,为各种不同的数据库提供统据库连接方式,为各种不同的数据库提供统一的操作界面一的操作界面 JDBC连接数据库的方法连接数据库的方法n 通过通过专用网络协议专用网络协议创建的驱动程序与数据创建的驱动程序与数据库直接通信。库直接通信。u 直接使用数据库厂商提供的、用专用网络协直接使用数据库厂商提供的、用专用网络协议创建的驱动程序议创建的驱动程序u各大厂商都为数据库提供了这种各大厂商都为数据库提供了这种JDBC驱动,驱动,这种方式最简单实用。这种方式最简单实用。应用程序应用程序JDBC API驱动程序驱动程序数
5、据源数据源 n 通过通过JDBC-ODBC桥与桥与ODBC数据库通信数据库通信uSun公司发行了一个用于访问公司发行了一个用于访问ODBC数据源的驱数据源的驱动程序,称为动程序,称为JDBC-ODBC桥接器。该桥接器桥接器。该桥接器用用jdbcodbc.class和一个用于访问和一个用于访问ODBC驱动程驱动程序的序的本地库本地库来实现的。来实现的。u 对于对于Windows平台,该本地库是一个平台,该本地库是一个DLL动态动态链接库链接库JDBCODBC.DLLu其优点是使其优点是使JDBC目前有能力访问几乎所有的数目前有能力访问几乎所有的数据库。据库。应用程序应用程序数据源数据源JDBC
6、APIJDBC -ODBCODBC APIODBC层层 n 通过部分专用的驱动程序与数据库通信通过部分专用的驱动程序与数据库通信u将将JDBC数据库调用直接翻译为厂商专用的数据库调用直接翻译为厂商专用的API,执行更有效,更快捷。,执行更有效,更快捷。应用程序应用程序JDBC API驱动程序驱动程序数据源数据源专用专用APIJDBC APIv JDBC API所有的类和接口都集中在所有的类和接口都集中在java.sql和和javax.sql这两个包中这两个包中驱动管理器驱动管理器连接连接语句语句结果集结果集(1) 登记并加载登记并加载JDBC驱动程序驱动程序(2) 建立与建立与SQL数据库的连
7、接数据库的连接(3) 传送一个传送一个SQL查询查询(4) 获得结果获得结果JDBC API的使用方法的使用方法v 注册数据库的驱动程序注册数据库的驱动程序v 隐式加载隐式加载u 作为初始化的一部分,作为初始化的一部分,DriverManager 类会尝试类会尝试加载在加载在 “jdbc.drivers” 系统属性中引用的驱动程系统属性中引用的驱动程序类。这允许用户自定义由他们的应用程序使用序类。这允许用户自定义由他们的应用程序使用的的 JDBC Driver。例如。例如jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDri
8、ver u public static void registerDriver(Driver driver) throws SQLException 向向 DriverManager 注册给定驱动程序注册给定驱动程序 u 一旦一旦DriverManager类被初始化,将不再检查类被初始化,将不再检查jdbc.drivers属性表属性表u 需要持久的预设环境需要持久的预设环境public interface Driver l 每个驱动程序类必须实现的接口每个驱动程序类必须实现的接口l Java SQL 框架允许多个数据库驱动程序框架允许多个数据库驱动程序l 每个驱动程序都应该提供一个实现每个驱动
9、程序都应该提供一个实现 Driver 接口的类接口的类l DriverManager 会试着加载尽可能多的它可以找到会试着加载尽可能多的它可以找到 的驱动程序,然后,对于任何给定连接请求,它会的驱动程序,然后,对于任何给定连接请求,它会 让每个驱动程序让每个驱动程序依次试着连接到目标依次试着连接到目标 URL DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver( ) );v DriverManageru DriverManager 类是类是 JDBC 的管理层,作用于用户和的管理层,作用于用
10、户和驱动程序之间。它跟踪可用的驱动程序,并在数据库驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。和相应驱动程序之间建立连接。u public static Driver getDriver(String url) throws SQLException 试图查找能理解给定试图查找能理解给定 URL 的驱动程序。的驱动程序。u public static Enumeration getDrivers() 检索带有当前调用方可以访问的所有当前已加载检索带有当前调用方可以访问的所有当前已加载 JDBC 驱动程序的驱动程序的 Enumeration u public sta
11、tic void registerDriver(Driver driver) throws SQLException 向向 DriverManager 注册给定驱动程序。在加载驱动程注册给定驱动程序。在加载驱动程序时由驱动程序自动调用序时由驱动程序自动调用 v 显式加载显式加载u public static Class forName(String className) throws ClassNotFoundException java.lang.Class u使用与当前使用与当前 applet 或应用程序相同的类加载器或应用程序相同的类加载器显式加载驱动程序显式加载驱动程序 Class.f
12、orName(“com.mysql.jdbc.Driver”);Class.forName(“acme.db.Driver”);如果将如果将acme.db.Driver编写为加载时创建实例,并调用以该实例编写为加载时创建实例,并调用以该实例为参数的为参数的DriverManager.registerDriver,则它在,则它在DriverManager的驱动程序列表中,并可用于创建连接的驱动程序列表中,并可用于创建连接 v将驱动程序添加到将驱动程序添加到Java.lang.System的属性的属性jdbc.drivers中中 u是一个由是一个由DriverManager类加载的驱动程序类名类加
13、载的驱动程序类名的列表,由冒号分隔的列表,由冒号分隔 jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.test.ourDriver; u初始化初始化DriverManager类时,它搜索系统属性类时,它搜索系统属性jdbc.drivers,如果用户已输入了一个或多个驱,如果用户已输入了一个或多个驱动程序,则动程序,则DriverManager类将试图加载它们。类将试图加载它们。u一旦一旦DriverManager类被初始化,将不再检查类被初始化,将不再检查jdbc.drivers属性表属性表v 建立数据库连接建立数据库连接u public s
14、tatic Connection getConnection(String url) throws SQLException 试图建立到给定数据库试图建立到给定数据库 URL 的连接。的连接。 DriverManager 试图从已注册的驱动程序集中试图从已注册的驱动程序集中选择一个适当的驱动程序。选择一个适当的驱动程序。 假定构造数据库连接时不需要用户名、口令或假定构造数据库连接时不需要用户名、口令或其他数据库属性其他数据库属性u DriverManager将检查每个驱动程序,轮流在将检查每个驱动程序,轮流在每个驱动程序上调用方法每个驱动程序上调用方法Driver.connect, 查看它查看
15、它是否可以建立连接。是否可以建立连接。u DriverManager将使用它所找到的第一个可以将使用它所找到的第一个可以成功连接到给定成功连接到给定URL的驱动程序的驱动程序 u public static Connection getConnection(String url, Properties info) throws SQLException info包含连接数据库所需的所有属性项;通常至包含连接数据库所需的所有属性项;通常至少应该包括少应该包括 user 和和 password 属性属性u public static Connection getConnection(String
16、url, String user, String password) throws SQLException 指定了连接的用户名和密码指定了连接的用户名和密码Connection con=DriverManager.getConnection(“jdbc:mysql:/localhost/UpdateDB”,”root”,”);v Connection对象对象u 用于连接数据库和用于连接数据库和Java应用程序应用程序u 打开连接的方法打开连接的方法u Connection connect(String url, Properties info) throws SQLException jav
17、a.sql.Driver 试图创建一个到给定试图创建一个到给定 URL 的数据库连接。的数据库连接。u DriverManager.getConnectionu 提供应用程序与数据库的提供应用程序与数据库的静态连接静态连接u 单一应用程序可以:单一应用程序可以:u 拥有与单个数据库的一个或多个连接拥有与单个数据库的一个或多个连接u 拥有与许多不同数据库的连接拥有与许多不同数据库的连接public interface ConnectionJDBC URLvJDBC URL提供了一种提供了一种标识数据库标识数据库的方法,的方法,可以使用相应的驱动程序识别该数据库,可以使用相应的驱动程序识别该数据库
18、,并与之建立连接。并与之建立连接。 v标准语法:标准语法:jdbc:ujdbc协议:协议:JDBC URL中的协议总是中的协议总是jdbc。u子协议:驱动程序名或连接机制的名称。子协议:驱动程序名或连接机制的名称。u如果要用网络命名服务,则命名服务可以作为子协议。如果要用网络命名服务,则命名服务可以作为子协议。 Jdbc:dcenaming:accounts u驱动程序编程员可保留某个名称以将之用作驱动程序编程员可保留某个名称以将之用作JDBC URL的子协议名的子协议名 u子名称:数据库的唯一标识符。子名称:数据库的唯一标识符。u如果数据库是通过如果数据库是通过Internet来访问的来访问
19、的 ,则遵循命名规,则遵循命名规定定 /主机名主机名:端口端口/数据库名数据库名 例例 jdbc:odbc:goodsjdbc:dcenaming:accountsjdbc:dbnet:/wombat:356/fredjdbc:mysql:/localhost/UpdateDBodbc子协议子协议vodbc子协议用于指定子协议用于指定ODBC风格的数据资源风格的数据资源名称的名称的URL,允许指定任意多的属性值。,允许指定任意多的属性值。v语法:语法:Jdbc:odbc:;=例:例:Jdbc:odbc:students;UID=tech;PWD=123Jdbc:odbc:wombat;Cach
20、eSize=20;ExtensionCase=LOWER 如何与数据库建立连接如何与数据库建立连接? ?获取和安装获取和安装JDBCv以以mysq为例:为例:v首先,下载首先,下载mysql,并安装。,并安装。uhttp:/ 下载下载mysql-connector-java-5.1.5.tar.zipu解压,并进行相应的配置。解压,并进行相应的配置。 v配置方法:配置方法:u进入进入Javajre1.6.0_02lib目录将目录将mysql-connector-java-5.1.5-bin.jar拷贝到该目录下。拷贝到该目录下。u配置配置classpath,追加,追加%JAVA_HOME% j
21、re1.6.0_02lib mysql-connector-java-5.1.5-bin.jar;v配置的目的是让配置的目的是让java应用程序找到连接应用程序找到连接mysql的驱动的驱动 如何向数据库递交查询和更新请求如何向数据库递交查询和更新请求并获得返回的结果并获得返回的结果? ?v Statement对象对象u 用于执行用于执行SQL语句并获取数据库的返回结果语句并获取数据库的返回结果u Statement createStatement( ) throws SQLException java.sql.Connectionu 常用方法常用方法u boolean execute(Str
22、ing sql) throws SQLException 执行给定的执行给定的 SQL 语句,该语句可能返回多个结果。语句,该语句可能返回多个结果。如果结果是如果结果是ResultSet对象则返回对象则返回true;结果是更新计数或;结果是更新计数或执行的语句是执行的语句是DL命令则返回命令则返回false u ResultSet executeQuery(String sql) throws SQLException执行给定的执行给定的 SQL 语句,该语句返回单个语句,该语句返回单个 ResultSet 对象。对象。 public interface Statementu int exec
23、uteUpdate(String sql) throws SQLException 执行给定执行给定 SQL 语句,该语句可能为语句,该语句可能为 INSERT、UPDATE 或或 DELETE 语句,或者不返回任何内容的语句,或者不返回任何内容的 SQL 语句(如语句(如 SQL DDL 语句)。语句)。 返回返回INSERT、UPDATE 或或 DELETE 语句的行计数;或者语句的行计数;或者 0,表示不返回任何内容的,表示不返回任何内容的 SQL 语语句句 u执行语句的所有方法都将关闭所调用的执行语句的所有方法都将关闭所调用的Statement对对象的当前打开结果集(如果存在)。这意味
24、着在重象的当前打开结果集(如果存在)。这意味着在重新执行新执行Statement对象之前,需要完成对当前对象之前,需要完成对当前ResultSet对象的处理。对象的处理。u 使用方法使用方法execute( )u仅在语句能返回多个仅在语句能返回多个ResultSet对象、多个更新计数或对象、多个更新计数或ResultSet对象与更新计数的组合时使用对象与更新计数的组合时使用 u ResultSet getResultSet( ) throws SQLException 以以 ResultSet 对象的形式检索当前结果。每个结果对象的形式检索当前结果。每个结果只应调用一次此方法。当只应调用一次此
25、方法。当SQL语句的结果不是结语句的结果不是结果集时,将返回果集时,将返回null。 u boolean getMoreResults() throws SQLException 移动到此移动到此 Statement 对象的下一个结果,如果其为对象的下一个结果,如果其为 ResultSet 对象,则返回对象,则返回 true,并隐式关闭利用方,并隐式关闭利用方法法 getResultSet 获取的所有当前获取的所有当前 ResultSet 对象。对象。u int getUpdateCount() throws SQLException 以更新计数的形式检索当前结果;如果结果为以更新计数的形式检
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 数据库 连接
限制150内