资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
JDBC1.2 中几个最重要的接口和类1、DriverManager 类是 JDBC 的管理层,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager 类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。对于简单的应用程序,一般程序员需要在此类中直接使用的唯一方法是 DriverManager.getConnection()。正如名称所示,该方法将建立与数据库的连接。 2、Connection:次类代表与数据库的连接。连接过程包括所执行的 SQL 语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。3、Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(从 Statement 继承而来)和CallableStatement(从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句:Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。4、ResultSet 包含符合 SQL 语句中条件的所有行,并且它通过一套 get 方法(这些 get 方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next 方法用于移动到 ResultSet 中的下一行,使下一行成为当前行。JDBC1.0 的规范只提供光标在 ResultSet 的向后移动,只有 next()方法,而没有 previous()方法。在 JDBC2.0 中,增加了 previous()方法。结果集一般是一个表,其中有查询所返回的列标题及相应的值。例如,如果查询为 SELECT a, b, c FROM Table1,则结果集将具有如下形式: a b c- - -12345 北京 CA83472 上海 WA83492 重庆 MA下面的代码段是执行 SQL 语句的示例。该 SQL 语句将返回行集合,其中列 1 为 int,列 2 为 String,而列 3 则为字节数组 br java.sql.Statement stmt = conn.createStatement();java.sql.ResultSet rs = 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(ROW = + i + + s + + f); 我们目前所知晓的 JDBC 驱动程序可分为以下四个种类: 1、 JDBC-ODBC 桥加 ODBC 驱动程序:JavaSoft 桥产品利用 ODBC 驱动程序提供 JDBC 访问。注意, 必须将ODBC 二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用 Java 编写的三层结构的应用程序服5、 务器代码。 2. 本地 API -部份用 Java 来编写的驱动程序:这种类型的驱动程序把客户机 API 上的 JDBC 调用转换为Oracle、Sybase、Informix、DB2 或其它 DBMS 的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。3、 JDBC 网络纯 Java 驱动程序:这种驱动程序将 JDBC 转换为与 DBMS 无关的网络协议,这种协议又被某个服务器转换为一种 DBMS 协议。这种网络服务器中间件能够将它的纯 Java 客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的 JDBC 驱动程序。有可能所有这种解决方案的提供者都提供适合于 Intranet 用的产品。为了使这些产品也支持 Internet 访问,它们必须处理 Web 所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将 JDBC 驱动程序加到他们现有的数据库中间件产品中。4、 本地协议纯 Java 驱动程序:这种类型的驱动程序将 JDBC 调用直接转换为 DBMS 所使用的网络协议。这将允许从客户机机器上直接调用 DBMS 服务器,是 Intranet 访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。第 3、4 类驱动程序将成为从 JDBC 访问数据库的首选方法。第 1、2 类驱动程序在直接的纯 Java 驱动程序还没有上市前将会作为过渡方案来使用。对第 1、2 类驱动程序可能会有一些变种(下表中未列出),这些变种要求有连接器,但通常这些是更加不可取的解决方案。第 3、4 类驱动程序提供了 Java 的所有优点,包括自动安装(例如,通过使用 JDBC 驱动程序的 applet applet 来下载该驱动程序)。什么是事务的 ACID 特性就是原子特性,不可再分,一个事务内的语句只要有一条出错就都恢复到没执行时的状态(回滚) 。 就是一个事务要么所有语句都执行,要出错就等于一个都没执行数据库系统必须维护事务的以下特性:原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 持久性(Durability). 这些特性简称 ACID。事务的标准定义: 指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性四个属性,统称为 ACID 特性。事务(Transaction )是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server 能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。 (2):事务通常是以 BEGIN TRANSACTION 开始,以 COMMIT 或 ROLLBACK 结束。 COMMIT 表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。 ROLLBACK 表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。 (3):事务运行的三种模式: A:自动提交事务 每条单独的语句都是一个事务。每个语句后都隐含一个 COMMIT。 B:显式事务 以 BEGIN TRANSACTION 显式开始,以 COMMIT 或 ROLLBACK 显式结束。 C:隐性事务 在前一个事务完成时,新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 显式结束。 (4):事务的特性(ACID 特性) A:原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 B:一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 C:隔离性(Isolation) 一个事务的执行不能被其他事务干扰。 D:持续性/永久性(Durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 注:事务是恢复和并发控制的基本单位。 (1)是回答事务的概念到底是什么即你的提问,至于(2)、(3)、(4)只是作的稍许补充而已,不必深究,呵呵)进程死锁死锁定义:一组进程中,任何一个进程都由于在等待该组其他进程占用的某些资源并且永远无法得到,这种现象被称为进程死锁,这组进程被称为死锁进程。关于死锁的一些结论:a.参与死锁的进程必须要=两个 b.至少要有两个进程占有了资源 c.参与死锁的所有进程都在等待资源产生死锁的四个基本条件:a.循环等待 b.不可剥夺 c.互斥使用 d.请求和保持多线程之避免死锁 2008-10-07 11:08 概念:死锁是指永久阻塞一组争用一组资源的线程。导致死锁的最常见情况是自死锁或递归死锁。在自死锁或递归死锁中,线程尝试获取已被其持有的锁。递归死锁是在编程时很容易犯的错误。另一种死锁的情况就是多个线程分别获取一部分资源,并且等待循环等待其他线程已经获取的资源。避免死锁有一般的银行家算法,该算法假设每个客户有可能在没有得到最大资源的情况下也能工作。银行家算法对每一个请求进行检查,如果它会导致不安全状态,则不满足该请求,否则便满足。检查状态是否安全是看是否有足够的资源满足距最大需求最近的客户。对于每个线程都需要得到最大资源才能工作的情况下,避免死锁有如下的一般编程实践:(1)请勿尝试在可能会对性能造成不良影响的长时间操作(如 I/O)中持有锁;(2)请勿在可能直接或间接递归调用自己的函数里持有锁;(3)一般情况下,请先使用粗粒度锁定方法,确定瓶颈,并在必要时添加细粒度锁定来缓解瓶颈。大多数锁定都是短期持有,而且很少出现争用。因此,请仅修复测得争用的那些锁定;(4)使用多个锁定时,通过确保所有线程都按相同的顺序获取锁定来避免死锁;(5)在等待某个资源时,使用超时机制;(6)在系统中使用一个定时检查死锁环的机制,如果发现死锁就让一个线程的资源释放掉(数据库好像就是用这种方式) 。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号