Java与数据库的连接ppt课件.ppt
《Java与数据库的连接ppt课件.ppt》由会员分享,可在线阅读,更多相关《Java与数据库的连接ppt课件.ppt(80页珍藏版)》请在三一办公上搜索。
1、Java与数据库的连接,JDBC 简介,数据库的应用目前已经非常普遍,在应用程序的开发过程中,经常会涉及到访问数据库。Java语言为访问数据库提供了方便的技术。Java使用JDBC (Java Database Connectivity)技术进行数据库的访问。Java应用程序通过JDBC API和JDBC驱动程序管理器进行通信。,JDBC的诞生,从ODBC到JDBCODBC(Open DataBase Connectivity),是一种用来在关系数据库以及非关系数据库管理系统中存取数据,用C语言实现的标准应用程序接口。其主要结构:应用程序接口、驱动程序管理器、数据库驱动程序和数据源。,JDBC
2、的诞生 以前由于没有一个Java语言的数据库API,编程人员不得不在Java程序中加入C语言的ODBC函数调用,从而使Java的很多优秀特性无法充分发挥 ODBC具有不易使用,非面向对象等缺点为了充分发挥java语言的特性,迎合数据库开发的需求,sun开发了一套java语言的数据库应用程序开发接口和类,即JDBC。它在Java程序中实现数据库操作功能并简化操作过程。,JDBC为数据库及其工具的开发人员提供了一个标准的API,使他们能够用纯Java API编写数据库应用程序 JDBC支持基本SQL语句,提供多样化的数据库连接方式,为各种不同的数据库提供统一的操作界面,JDBC连接数据库的方法,通
3、过专用网络协议创建的驱动程序与数据库直接通信。 直接使用数据库厂商提供的、用专用网络协议创建的驱动程序各大厂商都为数据库提供了这种JDBC驱动,这种方式最简单实用。,通过JDBC-ODBC桥与ODBC数据库通信Sun公司发行了一个用于访问ODBC数据源的驱动程序,称为JDBC-ODBC桥接器。该桥接器用jdbcodbc.class和一个用于访问ODBC驱动程序的本地库来实现的。 对于Windows平台,该本地库是一个DLL动态链接库JDBCODBC.DLL其优点是使JDBC目前有能力访问几乎所有的数据库。,通过部分专用的驱动程序与数据库通信将JDBC数据库调用直接翻译为厂商专用的API,执行更
4、有效,更快捷。,JDBC API,JDBC API所有的类和接口都集中在java.sql和javax.sql这两个包中,(1) 登记并加载JDBC驱动程序,(2) 建立与SQL数据库的连接,(3) 传送一个SQL查询,(4) 获得结果,JDBC API的使用方法,注册数据库的驱动程序 隐式加载 作为初始化的一部分,DriverManager 类会尝试加载在 “jdbc.drivers” 系统属性中引用的驱动程序类。这允许用户自定义由他们的应用程序使用的 JDBC Driver。例如jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.o
5、urDriver public static void registerDriver(Driverdriver) throws SQLException 向 DriverManager 注册给定驱动程序,一旦DriverManager类被初始化,将不再检查jdbc.drivers属性表 需要持久的预设环境,public interface Driver,每个驱动程序类必须实现的接口 Java SQL 框架允许多个数据库驱动程序 每个驱动程序都应该提供一个实现 Driver 接口的类 DriverManager 会试着加载尽可能多的它可以找到 的驱动程序,然后,对于任何给定连接请求,它会 让每个
6、驱动程序依次试着连接到目标 URL,DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver( ) );,DriverManager DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。 public static Driver getDriver(Stringurl) throws SQLException 试图查找能理解给定 URL 的驱动程序。 public static Enumeration getD
7、rivers() 检索带有当前调用方可以访问的所有当前已加载 JDBC 驱动程序的 Enumeration public static void registerDriver(Driverdriver) throws SQLException 向 DriverManager 注册给定驱动程序。在加载驱动程序时由驱动程序自动调用,显式加载 public static Class forName(StringclassName) throws ClassNotFoundException java.lang.Class 使用与当前 applet 或应用程序相同的类加载器显式加载驱动程序,Class
8、.forName(“com.mysql.jdbc.Driver”);Class.forName(“acme.db.Driver”);,如果将acme.db.Driver编写为加载时创建实例,并调用以该实例为参数的DriverManager.registerDriver,则它在DriverManager的驱动程序列表中,并可用于创建连接,将驱动程序添加到Java.lang.System的属性jdbc.drivers中 是一个由DriverManager类加载的驱动程序类名的列表,由冒号分隔 jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.tes
9、t.ourDriver; 初始化DriverManager类时,它搜索系统属性jdbc.drivers,如果用户已输入了一个或多个驱动程序,则DriverManager类将试图加载它们。一旦DriverManager类被初始化,将不再检查jdbc.drivers属性表,建立数据库连接 public static Connection getConnection(Stringurl) throws SQLException 试图建立到给定数据库 URL 的连接。 DriverManager 试图从已注册的驱动程序集中选择一个适当的驱动程序。 假定构造数据库连接时不需要用户名、口令或其他数据库属性
10、 DriverManager将检查每个驱动程序,轮流在每个驱动程序上调用方法Driver.connect, 查看它是否可以建立连接。 DriverManager将使用它所找到的第一个可以成功连接到给定URL的驱动程序,ublic static Connection getConnection(Stringurl, Propertiesinfo) throws SQLException info包含连接数据库所需的所有属性项;通常至少应该包括 user 和 password 属性 public static Connection getConnection(Stringurl, Stringus
11、er, Stringpassword) throws SQLException 指定了连接的用户名和密码,Connection con=DriverManager.getConnection(“jdbc:mysql:/localhost/UpdateDB”,”root”,”);,Connection对象 用于连接数据库和Java应用程序 打开连接的方法 Connection connect(Stringurl, Propertiesinfo) throws SQLException java.sql.Driver 试图创建一个到给定 URL 的数据库连接。 DriverManager.getC
12、onnection 提供应用程序与数据库的静态连接 单一应用程序可以: 拥有与单个数据库的一个或多个连接 拥有与许多不同数据库的连接,public interface Connection,JDBC URL,JDBC URL提供了一种标识数据库的方法,可以使用相应的驱动程序识别该数据库,并与之建立连接。,标准语法:jdbc:jdbc协议:JDBC URL中的协议总是jdbc。子协议:驱动程序名或连接机制的名称。如果要用网络命名服务,则命名服务可以作为子协议。 Jdbc:dcenaming:accounts 驱动程序编程员可保留某个名称以将之用作JDBC URL的子协议名 子名称:数据库的唯一标
13、识符。如果数据库是通过Internet来访问的 ,则遵循命名规定 /主机名:端口/数据库名 例 jdbc:odbc:goodsjdbc:dcenaming:accountsjdbc:dbnet:/wombat:356/fredjdbc:mysql:/localhost/UpdateDB,odbc子协议,odbc子协议用于指定ODBC风格的数据资源名称的URL,允许指定任意多的属性值。语法:Jdbc:odbc:;=例:Jdbc:odbc:students;UID=tech;PWD=123Jdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWER,如何与数据
14、库建立连接?,获取和安装JDBC,以mysq为例:首先,下载mysql,并安装。http:/ 下载mysql-connector-java-5.1.5.tar.zip解压,并进行相应的配置。,配置方法:进入Javajre1.6.0_02lib目录将mysql-connector-java-5.1.5-bin.jar拷贝到该目录下。配置classpath,追加%JAVA_HOME% jre1.6.0_02lib mysql-connector-java-5.1.5-bin.jar;配置的目的是让java应用程序找到连接mysql的驱动,如何向数据库递交查询和更新请求并获得返回的结果?,State
15、ment对象 用于执行SQL语句并获取数据库的返回结果 Statement createStatement( ) throws SQLException java.sql.Connection 常用方法 boolean execute(Stringsql) throws SQLException 执行给定的 SQL 语句,该语句可能返回多个结果。如果结果是ResultSet对象则返回true;结果是更新计数或执行的语句是DL命令则返回false ResultSet executeQuery(Stringsql) throws SQLException执行给定的 SQL 语句,该语句返回单个 R
16、esultSet 对象。,public interface Statement,int executeUpdate(Stringsql) throws SQLException 执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。 返回INSERT、UPDATE 或 DELETE 语句的行计数;或者 0,表示不返回任何内容的 SQL 语句 执行语句的所有方法都将关闭所调用的Statement对象的当前打开结果集(如果存在)。这意味着在重新执行Statement对象之前,需要完成对当前Resul
17、tSet对象的处理。 使用方法execute( )仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用,ResultSet getResultSet( ) throws SQLException 以 ResultSet 对象的形式检索当前结果。每个结果只应调用一次此方法。当SQL语句的结果不是结果集时,将返回null。 boolean getMoreResults() throws SQLException 移动到此 Statement 对象的下一个结果,如果其为 ResultSet 对象,则返回 true,并隐式关闭利用方法 getResult
18、Set 获取的所有当前 ResultSet 对象。 int getUpdateCount() throws SQLException 以更新计数的形式检索当前结果;如果结果为 ResultSet 对象或没有更多结果,则返回 -1。每个结果只应调用一次此方法。,int getMaxFieldSize() throws SQLException 检索可以为此 Statement 对象所生成 ResultSet 对象中的字符和二进制列值返回的最大字节数。如果超过了该限制,则安静地丢弃多出的数据。 int getMaxRows() throws SQLException 检索由此 Statement
19、对象生成的 ResultSet 对象可以包含的最大行数。如果超过了此限制,则安静地撤消多出的行。 int getQueryTimeout() throws SQLException 检索驱动程序等待 Statement 对象执行的秒数。如果超过该限制,则抛出 SQLException。,关闭Statement对象 Statement对象将由Java垃圾收集程序自动关闭显式关闭将立即释放DBMS资源,有助于避免潜在的内存问题。,如何处理查询结果?,ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 ResultSet 对象具有指向其当前数据行的指针。最初,指针被置于第
20、一行之前。next 方法将指针移动到下一行。 ResultSet 接口提供用于从当前行检索列值的获取方法(getBoolean、getLong 等) 可以使用列的索引编号或列的名称检索值 String getString(intcolumnIndex) throws SQLException String getString(StringcolumnName) throws SQLException 列名不区分大小写,public interface ResultSet,对于获取方法getXXX( ),JDBC 驱动程序尝试将基础数据转换为在获取方法中指定的 Java 类型,并返回适当的 Ja
21、va 值。用户不必关闭ResultSet;当产生它的Statement关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被Statement自动关闭。,Statementstmt=conn.createStatement( ); ResultSet r=stmt.executeQuery(SELECT a,b,c FROM Table1“); while (r.next( ) /打印当前行的值。 Int i=r.getInt(a“); String s=r.getString(b“); Float f=r.getFloat(c“); System.out.println
22、(ROW=+i+ +s+ +f ); ,如何获取结果集中任意位置处的记录?,游标控制 boolean next() throws SQLException 将指针从当前位置下移一行。ResultSet 指针最初位于第一行之前 boolean previous() throws SQLException 将指针移动到此 ResultSet 对象的上一行 boolean first() throws SQLException 将指针移动到此 ResultSet 对象的第一行。 boolean last() throws SQLException 将指针移动到此 ResultSet 对象的最后一行。
23、 void beforeFirst() throws SQLException 将指针移动到此 ResultSet 对象的开头,正好位于第一行之前。,void afterLast() throws SQLException 将指针移动到此 ResultSet 对象的末尾,正好位于最后一行之后。 boolean absolute(introw) throws SQLException 将指针移动到此 ResultSet 对象的给定行编号。 boolean relative(introws) throws SQLException按相对行数(或正或负)移动指针在ResultSet对象或其父辈Sta
24、tement对象关闭之前,光标一直保持有效。,如何向结果集及数据库中插入、删除、更改记录?,可更新的ResultSet,创建可更新的结果集:createStatement方法第二参数需要是CONCUR_UPDATABLE UpdatableResultSet不能保证获得可更新的结果集,需要驱动程序的支持。 int getConcurrency() throws SQLException 检索此 ResultSet 对象的并发模式。 并发类型ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE,插入新行可更新的 ResultSet 对象具
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 数据库 连接 ppt 课件
链接地址:https://www.31ppt.com/p-1376274.html