您好,欢迎访问三七文档
NameDateJDBC数据库连接纽带教学内容基本目标:•了解JDBC(JavaDatabaseConnectivity)相关概念•JDBC的四种类型的驱动•JDBC核心接口与类•JDBC体系结构图和开发步骤•JDBC事务进阶目标:•并发控制(ConcurrencyControl)•事务的隔离级别•批处理(Batch)了解JDBC基本概念什么是JDBC?什么是ODBC?WhyJDBC?CC++JavaAPIforOracleAPIforSqlServerAPIforMysqlAPIforDB2OracleSqlServerMysqlDB2WhyJDBC?CC++JavaODBCJDBCAPIforOracleAPIforSqlServerAPIforMysqlAPIforDB2OracleSqlServerMysqlDB2JDBC两端JavaJDBCJDBCJDBCJDBCOracleSqlServerMysqlDB2统一接口不同的数据库接口什么是JDBC?JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口),它由一些Java语言编写的类和接口组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“一次编写,处处运行”。什么是ODBC?ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access,MYSQL还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。JDBC访问数据库的四种方式Type1:jdbc-odbc桥Type2:本地API驱动Type3:网络协议驱动Type4:本地协议驱动Type1:jdbc-odbc桥连接工作原理:把JDBCAPI调用转换成ODBCAPI调用,然后ODBCAPI调用针对供应商的ODBC驱动程序来访问数据库,即利用JDBC-ODBC桥通过ODBC来存储数据源。JDBC-ODBC应用模式Java应用程序JDBC-ODBC桥ODBC层JDBCAPIODBCAPIDBType2:本地Api驱动工作原理:本地api驱动直接把jdbc调用转变为数据库的标准调用再去访问数据库.这种方法需要本地数据库驱动代码。这种驱动比起jdbc-odbc桥执行效率大大提高了.但是,它仍然需要在客户端加载数据库厂商提供的代码库.这样就不适合基于internet的应用.并且,他的执行效率比起3,4型的jdbc驱动还是不够高.本地API驱动DBServer厂商DB代码Type3:网络协议驱动工作原理:这种驱动实际上是根据我们熟悉的三层结构建立的,jdbc先把对数局库的访问请求传递给网络上的中间件服务器,中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器.如果中间件服务器也是用java开发的,那么在在中间层也可以使用第1或第2型jdbc驱动程序作为访问数据库的方法。由于这种驱动是基于server的,所以它不需要在客户端加载数据库厂商提供的代码库.而且他在执行效率和可升级性方面是比较好的.因为大部分功能实现都在server端,所以这种驱动可以设计的很小,可以非常快速的加载到内存中.但是,这种驱动在中间件层仍然需要有配置其它数据库驱动程序,并且由于多了一个中间层传递数据,它的执行效率还不是最好.网络协议驱动中间件服务器数据库ServerType4:本地协议驱动工作原理:这种驱动直接把jdbc调用转换为符合相关数据库系统规范的请求.由于4型驱动写的应用可以直接和数据库服务器通讯,这种类型的驱动完全由java实现,因此实现了平台独立性。由于这种驱动不需要先把jdbc的调用传给odbc或本地数据库接口或者是中间层服务器,所以它的执行效率是非常高的,而且,它根本不需要在客户端或服务器端装载任何的软件或驱动,这种驱动程序可以动态的被下载,但是对于不同的数据库需要下载不同的驱动程序。本地协议驱动数据库ServerJDBC核心接口与类java.sql包Javax.sql包Java.sql包JDBC核心类库包含在java.sql包中。以下是java.sql包中重要的接口与类:接口:java.sql.Driver:每个驱动程序类必须实现的接口。java.sql.Connection:特定数据库的连接(会话)。在连接上下文中执行SQL语句并返回结果。java.sql.PreparedStatement:表示预编译的SQL语句的对象。java.sql.Statement:用于执行静态SQL语句并返回它所生成结果的对象。java.sql.ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。java.sql.CallableStatement:用于执行SQL存储过程的接口。类:java.sql.DriverManager:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。接口关系图javax.sql包javax.sql包中重要的接口:javax.sql.DataSourcejavax.sql.RowSet注意:javax.sql包中的类和接口最开始是作为JDBC2.0可选包引入的编写JDBC程序的一般过程JDBC接口详解:Driver接口Driver接口:说明:每一个数据库驱动程序如果要实现与JDBCAPI的对接,就需要实现Driver接口,也就是说每个驱动程序都应该提供一个实现Driver接口的类,DriverManager会试着加载尽可能多的它可以找到的驱动程序,然后,对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标URL。在加载某一Driver类时,它应该创建自己的实例并向DriverManager注册该实例。这意味着用户可以通过调用以下程序加载和注册一个驱动程序。可以通过以下程序来加载和注册一个驱动程序:Class.forName(“Driver类名”);以下是加载各种不同数据库驱动程序的方法://SQLServer数据库Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);//Mysql数据库Class.forName(“com.mysql.jdbc.Driver”);//Oracle数据库Class.forName(“Oracle.jdbc.driver.OracleDriver”);DriverManager类DriverManager类作用:通常用来注册了数据库驱动程序后获得一个数据库连接对象。主要使用它的getConnection()方法。DriverManager会试着从初始化时加载的那些驱动程序以及使用与当前applet或应用程序相同的类加载器显式加载的那些驱动程序中查找合适的驱动程序。getConnection()方法常用的有如下的形式:StaticConnectiongetConnection(Stringurl)throwSQLException;StaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwSQLException;StaticConnectiongetConnection(Stringurl,java.util.Propertiesinfo)throwSQLException;注:参数user是指连接数据库是使用的用户名;参数password是指连接数据库时的用户user的登录密码;参数url是指连接数据库的URL,参数info是作为连接参数的任意字符串标记/值对的列表,通常包括“user”和“password”属性Connection接口(1)Connection接口作用:一个Connection对象表示与特定的数据库的连接,主要用于执行SQL语句并得到执行的结果。默认情况下,Connection对象处于自动提交模式下,也就是说在执行每个SQL语句后都会自动提交。注:如果禁用自动提交模式,为了提交更改就必须显示的调用commit()方法,否则无法更改保存数据库更改。Connection常用的方法有如下一些://创建一个Statement对象将SQL语句发送到数据库。没有参数的SQL语句通常使用Statement对象执行。如果多次执行相同的SQL语句,使用PreparedStatement对象可能更有效。StatementcreateStatement()throwsException;createStatement()方法还有带有参数的形式:(a)StatementcreateStatement(intresultSetType,intresultSetConcurrency)throwsException;Connection接口(2)(b)StatementcreateStatement(intresultSetType,intresultSetConcurrency,intresultSetHoldability)throwsException;第一种形式用于创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象,此方法与不带参数的createStatement()方法功能类似,但它允许重写默认结果记录集类型,可以设置并发性。第一种形式用于创建一个Statement对象,该对象将生成具有给定类型、并发性和可保存性ResultSet对象,此方法与不带参数的createStatement()方法功能类似,但它允许重写默认结果记录集类型,可以设置并发性和可保存性。resultSetType参数的值可以取一下ReasultSet常量之一:ResultSet.TYPE_FORWORD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLLL_SENSITIVE。resultSetConcurrency参数的值可以取一下ReasultSet常量之一:ResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLEConnection接口(3)resultSetHoldability参数可以取以下ResultSet常量之一:ResultSet.HOLD_CURSORS_OVER_COMMITResultSet.CLOSE_CURSORS_AT_COMMITStatement接口Statement接口作用:用于执行静态SQL语句并返回它所生成结果的对象
本文标题:JDBC技术
链接地址:https://www.777doc.com/doc-3559048 .html