ImageVerifierCode 换一换
你正在下载:

JDBC.docx

[预览]
格式:DOCX , 页数:20 ,大小:201.13KB ,
资源ID:25964466      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25964466.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JDBC.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JDBC.docx

1、JDBCJDBCJDBC的定位java程序中JDBC的定位EJB : 用于企业计算,数据持久化。 开发中,JDBC的定位Introduction1 What Is the JDBC API?The value of the JDBC API is that an application can access virtually any data source and run on any platform with a Java Virtual Machine.跨平台,跨数据库What Does the JDBC API Do?1- Establish a connection with a

2、data source 2- Send queries and update statements to the data source 3- Process the results 实例程序:Connection con = DriverManager.getConnection(jdbc:myDriver:wombat, myLogin, myPassword);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery(SELECT a, b, c FROM Table1);while (rs.next(

3、) int x = rs.getInt(a); String s = rs.getString(b); float f = rs.getFloat(c);DriverManager加载驱动程序Class.forName(驱动程序);Connection创建连接Connection con = DriverManager.getConnection(jdbc:myDriver:wombat, myLogin, myPassword);4类JDBC驱动程序(1)JDBCODBC bridgeJava提供的技术示范,性能差、安全差,实际项目中不使用(2)NativeAPI partly Java d

4、river 部分本地代码API driver :本地代码 Java代码 安全差(3)JDBCnet pure Java driver 性能差 (4)Native protocol pure Java driver数据库也提供VM,来实现Java程序JDBC的驱动程序,是一个逐步完善的过程。数据库在程序设计中的定位面向对象程序设计 面向过程程序设计JDBC访问数据库(1)要有Driver oracle的driver oracle.jdbc.driver.OracleDriver MySQL的driver com.mysql.jdbc.Driver (2)使用JDBC接口访问数据库 java.sq

5、l包 :主要的、基本的JDBC包 Driver DriverManager Connection Statement PreparedStatement CallableStatement ResultSet DatabaseMetadata ResultSetMetadata javax.sql包 :扩展的JDBC包(3)要符合JDBC协议 oracle的JDBC协议 jdbc:oracle:thin:IP地址端口号:数据库名 username password MySQL的JDBC协议 jdbc:mysql:/主机地址端口号/数据库名 username passwordJDBC访问数据库的

6、6个步骤(1)注册驱动程序(2)建立数据库连接(3)创建Statement(4)执行SQL语句(5)处理结果集(6)关闭JDBC对象注册驱动程序 常用方法: Class.forName(驱动程序名);Class.forName的作用: 1 加载驱动程序 2 隐含的向DriverManager注册driver提示: 驱动程序,可注册多个。建立数据库连接Connection conn=DriverManager.getConnection(URL);Connection conn=DriverManager.getConnection(URL,username,password);提示: 数据库已

7、在特定端口进行监听,因此建立数据库连接时,不需要提供登录远端主机的信息,只需提供登录数据库的username和password.创建Statement Statement stmt=conn.createStatement();Statement是操纵数据库的工具。Statement还有两种: PreparedStatement :Statement的子类 CallableStatement :PreparedStatement的子类PreparedStatement :用来处理“同构SQL” 同构SQL :SQL结构、关键部分相同的SQL语句。Java程序中的SQL语句,传到DB后,DB分两

8、步执行SQL: 1 编译SQL 2 执行编译后的可执行程序使用PreparedStatement,可大大减少SQL语句的编译次数,节省时间。PreparedStatement适合于对数据库的更新。CallableStatement 调用“存储过程”执行SQL语句 SQL语句是作为参数,传给DB,交由它编译、执行。提示: java中的SQL,不能带分号“;”结束。Java无法识别“;”的作用。处理结果集 元数据Metadata : 保存用户数据的数据结构的信息。 Database Metadata ResultSet Metadata 类比:去吃牛肉粉,用户关心的是牛肉粉,但是牛肉粉要用碗来装。

9、 牛肉粉是用户数据; 碗:是元数据。 元数据有一定的作用,有助于表达数据信息。 常用的元数据信息 1 结果集字段个数 2 字段名 3 字段类型 提示: 结果集中,字段的下标是从1开始的。关闭JDBC对象原因:数据库的连接个数是有限制的。提示: 关闭JDBC对象,也是有顺序的。若直接关闭Connection对象,则同时关闭Connection对象创建的Statement对象,以及Statement对象创建的ResultSet对象。事务原子操作 每一条SQL语句,都是一个原子操作。原子操作要么成功,要么失败。事务 对于若干个原子操作来说,它们的状态可有三种: 1 全部成功 2 全部失败 3 有的成

10、功,有的失败为了避免出现第3种情况。将若干个原子操作,封装(捆绑)成一个事务,这个事务被看成是一个原子操作。因此,事务要么成功执行,要么失败。 将若干个原子操作,封装成一个事务,是由数据库来完成的。程序的工作就是通知数据库,要将那些原子操作封装成一个事务。步骤:(事务的开始)1 通知数据库,将以下的若干个原子操作,封装成一个事务: 关闭自动提交:conn.setAutoCommit(false); 2 执行一系列原子操作(SQL语句) 事务开始后,原子操作的结果,以及原始数据都被保存起来,知道事务的提交。 3 rollback 或 commit(事务的结束)4 恢复自动提交 conn.setA

11、utoCommit(true);一个Connection对象,可有多个Statement。因此,事务是设置在Connection对象上的。事务的并发控制事务并发的负面后果 1 Dirty Read 2 Non-repeated Read 3 Phantom ReadDirty Read(脏读) 一个事务读到另一个事务还没提交的数据。产生不正确的数据。不可重复读(Non-repeated Read)读两次数据: 第1次读原始数据; 第2次读数据时,数据可能被另一个事务修改了。幻读(Phantom Read)读两次数据: 第1次读原始数据; 第2次读数据时,数据可能被另一个事务删除了或进行插入操作

12、后,读取的是另一条记录的数据。 DataSource 和 Connection PoolDataSource用来屏蔽特定的数据库。把数据库的连接信息放入一个DataSource对象中,连接数据库时,通过该DataSource对象来连接。优点: 增强程序的可移植性; DataSource是一种方便的手段。Connection Pool1存放Connection对象的容器; 2减少连接数据库的开销;3程序请求连接时,在Connection Pool中取连接;4连接使用完后,放回Connection Pool,不释放;5Connection Pool对连接进行管理:计数、监控连接状态;提示:Data

13、Source,使用的是Connection Pool中的连接。JNDI、DataSource、Connection Pool的关系DataSource是为了给使用者共享的,而JNDI是用来存放共享资源的。因此,DataSource被放到JNDI服务器上。JDBC和JNDI的比较JDBCJNDI加载驱动程序服务提供者物理存储数据库IDAP,文件,注册表各种设备APIJDBC APIJNDI API存储内容二维表对象密度集中零散,杂乱访问方式SQLbind,lookup提示: 文件系统file system也是一种服务器,它自带在操作系统中。创建一个数据源1创建一个DataSource对象;2将D

14、ataSource对象放入JNDI中,并指定数据源名: Context对象.bind(数据源名,DataSource对象)访问一个数据源 1数据源名; 2JNDI的位置; 3访问一个数据源:Context对象.lookup(数据源名)应用程序访问数据库的过程: 1连接JNDI服务器; 2从JNDI中取数据源; 3使用Connection Pool的连接; 4连接数据库; 5操作数据库; 6关闭连接。3层架构(Three-Tier Architecture)RowSet(行集)RowSet的特点:1RowSet,能将记录缓存在本地机的内存中;2适应分布式计算;3可在网络中传递;4RowSet可是

15、无连接的、也可是有连接的;5默认是可更新、可滚动的结果集。RowSet的实现1安装开发包;2开发RowSet应用程序。RowSet的类型CachedRowSetWebRowSet注意: 有些数据库还没有提供RowSet,现在用的是sun公司的RowSet开发包。 Rowset填补了MySQL不支持可更新结果集的限制。 Oracle不支持RowSet的可更新功能。 RowSet对象.acceptChanges();OOAD and Database DesignDatabase Design : 数据库设计模式 E-R图模式OOAD : 面向对象的分析与设计 E-O entityobject实体

16、的关系对象的关系Object ID 对象标识 在数据库中,用OID来标识一个对象。 一个对象,是class表的一条记录。ObjectID的限制条件: 1新建一个字段来作为OID; 2不能使用有业务含义的字段来做OID; 3OID有“有效范围”; 4OID的唯一性比primary key更严格; 5计算OID的算法:single-row table , hign/low 。OID算法single-row table : 一行一列表 在single-row table中,每个字段存放的是一个sequence,这样就保证OID的唯一性。high/low算法 high/low算法是对single-ro

17、w table算法的改进。high/low的思想:批发零售high/low的高级用法(1)设一个最高级的OID分配服务器;(2)所有的下级OID分配服务器都到它那获取OID的高位部分;(3)再自己造底位部分(4)高位部分、底位部分还可细分。例如: IP地址的分配,全世界都从美国获取IP地址的高位部分, 再自己造地位部分, 这就保证了IP地址在全世界的唯一性。Mapping classes to tablesone table for each class : 为每个类建一个表one table for each concrete(实体) class : 为每个实体类建一个表one table

18、for an entire class hierarchy : 为类的继承关系建一个表 前提:必须先有类的继承关系,才能建表为每个类建一个表优点: (1)更接近OO的概念 (2)支持多态 (3)易维护、无冗余缺点:(1)表的数量多;(2)读写表花费的时间长;(3)生成报表比较困难。为每个实体类建一个表优点: (1)更接近OO的概念 (2)支持多态 (3)易维护、无冗余 (4)生成报表较容易缺点:(1)修改抽象类,会影响实现该抽象类的所有实体类的表;(2)数据定义有冗余。为类的继承关系建一个表优点: (1)设计模式易理解 (2)支持多态 (3)容易生成报表缺点:(1)任何一个类的修改,都会影响表;(2)表的结构极大;(3)很难应用数据库的规则,来提高表的读写性能;(4)维护困难 end

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1