JDBCTM入门知识2:连接二
浏览:2127 类型:程序语言 发布人:WzW 发布日期:2009/6/4 22:17:05
jdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWER
jdbc:odbc:qeora;UID=kgh;PWD=fooey2.1.5 注册子协议驱动程序编程员可保留某个名称以将之用作 JDBC URL 的子协议名。
当 DriverManager 类将此名称加到已注册的驱动程序清单中时,为之保留该名称的驱动程序应能识别该名称并与它所标识的数据库建立连接。例如,odbc 是为 JDBC- ODBC 桥而保留的。示例之二,假设有个 Miracle 公司,它可能会将 "miracle" 注册为连接到其 Miracle DBMS 上的 JDBC 驱动程序的子协议,从而使其他人都无法使用这个名称。JavaSoft 目前作为非正式代理负责注册 JDBC 子协议名称。要注册某个子协议名称,请发送电子邮件到下述地址:
jdbc@wombat.eng.sun.com2.1.6 发送 SQL 语句连接一旦建立,就可用来向它所涉及的数据库传送 SQL 语句。JDBC对可被发送的 SQL 语句类型不加任何限制。这就提供了很大的灵活性,即允许使用特定的数据库语句或甚至于非 SQL 语句。然而,它要
求用户自己负责确保所涉及的数据库可以处理所发送的 SQL 语句,否则将自食其果。例如,如果某个应用程序试图向不支持储存程序的 DBMS 发送储存程序调用,就会失败并将抛出异常。JDBC 要求驱动程序应至少能提供 ANSI SQL-2 Entry Level 功能才可算是符合 JDBC 标准TM 的。这意味着用户至少可信赖这一标准级别的功能。JDBC 提供了三个类,用于向数据库发送 SQL 语句。Connection 接口中的三个方法可用于创建这些类的实例。下面列出这些类及其创建方法:
Statement ─ 由方法 createStatement 所创建。Statement 对象用于发送简单的 SQL 语句。
PreparedStatement ─ 由方法 prepareStatement 所创建。
PreparedStatement 对象用于发送带有一个或多个输入参数( IN 参数)
的 SQL 语句。PreparedStatement 拥有一组方法,用于设置 IN 参数的值。
执行语句时,这些 IN 参数将被送到数据库中。PreparedStatement 的实
例扩展了 Statement ,因此它们都包括了 Statement 的方法。
PreparedStatement 对象有可能比 Statement 对象的效率更高,因为它已被预编译过并存放在那以供将来使用。
CallableStatement ─ 由方法 prepareCall 所创建。CallableStatement 对象
用于执行 SQL 储存程序 ─ 一组可通过名称来调用(就象函数的调用那样)的
SQL 语句。CallableStatement 对象从 PreparedStatement 中继承了用于
处理 IN 参数的方法,而且还增加了用于处理 OUT 参数和 INOUT 参数的方法。
以下所列提供的方法可以快速决定应用哪个 Connection 方法来创建不同类型的 SQL 语句: createStatement 方法用于:
简单的 SQL 语句(不带参数) prepareStatement 方法用于: 带一个或多个 IN 参数的 SQL 语句 经常被执行的简单 SQL 语句
prepareCall 方法用于: 调用已储存过程2.1.7 事务事务由一个或多个这样的语句组成:这些语句已被执行、完成并被提交或还原。当调用方法 commit 或 rollback 时,当前事务即告就结束,另一个事务随即开始。
缺省情况下,新连接将处于自动提交模式。也就是说,当执行完语句后,将自动对那个语句调用 commit 方法。这种情况下,由于每个语句都是被单独提交的,因此一个事务只由一个语句组成。如果禁用自动提交模式,事务将要等到 commit 或 llback 方法被显式调用时
才结束,因此它将包括上一次调用 commit 或 rollback 方法以来所有执行过的语句。对于第二种情况,事务中的所有语句将作为组来提交或还原。方法 commit 使 SQL 语句对数据库所做的任何更改成为永久性的,它还将释放事务持有的全部锁。而方法 rollback 将弃去那些更改。
有时用户在另一个更改生效前不想让此更改生效。这可通过禁用自动提交并将两个更新组合在一个事务中来达到。如果两个更新都是成功
,则调用 commit 方法,从而使两个更新结果成为永久性的;如果其中之一或两个更新都失败了,则调用 rollback 方法,以将值恢复为进行更新之前的值。
大多数 JDBC 驱动程序都支持事务。事实上,符合 JDBC 的驱动程序必须支持事务。DatabaseMetaData 给出的信息描述 DBMS 所提供的事务支持水平。2.1.8 事务隔离级别如果 DBMS 支持事务处理,它必须有某种途径来管理两个事务同时对一个数据库进行操作时可能发生的冲突。用户可指定事务隔离级别,以指明 DBMS 应该花多大精力来解决潜在冲突。例如,当事务更改了某个值而第二个事务却在该更改被提交或还原前读取该值时该怎么办 假设第一个事务被还原后,第二个事务所读取的更改值将是无效的,那么是否可允许这种冲突? JDBC 用户可用以下代码来指示 DBMS 允许在值被提交前读取该值(“dirty 读取”),其中 con 是当前连接:
con.setTransactionIsolation(TRANSACTION_READ_UNCOMMITTED);
事务隔离级别越高,为避免冲突所花的精力也就越多。Connection 接口定义了五级,其中最低级别指定了根本就不支持事务,而最高级别则指定当事务在对某个数据库进行操作时,任何其它事务不得对那个事务正在读取的数据进行任何更改。通常,隔离级别越高,应用程序执行的速度也就越慢(由于用于锁定的资源耗费增加了,而用户间的并发操作减少了)。在决定采用什么隔离级别时,开发人员必须在性能需求和数据一致性需求之间进行权衡。当然,实际所能支持的级别取决于所涉及的 DBMS 的功能。
当创建 Connection 对象时,其事务隔离级别取决于驱动程序,但通常是所涉及的数据库的缺省值。用户可通过调用 setIsolationLevel方法来更改事务隔离级别。新的级别将在该连接过程的剩余时间内生效。要想只改变一个事务的事务隔离级别,必须在该事务开始前进行设置,并在该事务结束后进行复位。我们不提倡在事务的中途对事务隔离级别进行更改,因为这将立即触发 commit 方法的调用,使在
此之前所作的任何更改变成永久性的。
上一篇:JDBCTM入门知识2:连接一 下一篇:JDBCTM入门知识3:DriverManager
其它相关文章
您没有ASPEncodeDLL.AspCoding 对象的操作权限或该对象不存在,请联系服务器管理员 解决方法
sql server “不允许保存更改,您所做的更改要求删除并重新创建以下表”错误的解决办法
WIN2003 IIS6 Request 对象 错误 'ASP 0104 : 80004005' 不允许操作|IIS6取消限制上传超200KB文件方法