中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
在JRuby中构建Apache Derby数据库应用程序的两种方法(3)
作者:佚名 时间:2007-09-26 15:36 出处:ibmbw 责编:月夜寒箫
              摘要:在JRuby中构建Apache Derby数据库应用程序的两种方法(3)

处理 JRuby 中的 JDBC 异常

您的代码与 Java 代码之间还有另一个区别尚未提及:尚未执行任何操作来处理异常。Class.forNameDriverManager.getConnection 都抛出已检查异常。在 Java 代码中,等效代码将不会编译,直至对那些异常做出一些处理。Ruby 没有已检查异常,因此您不用处理它们。但是,编写应用程序时,通常希望执行一些处理异常的操作(如果可以)。执行代码可能产生两个已检查异常:ClassNotFoundExceptionSQLException。要了解如何处理这两个异常,请修改 .rb 文件以匹配清单 4 中所示的代码。

清单4:处理异常

            

require  'java'

module JavaSql

include_package 'java.sql'

end

include_class("java.lang.Class") { |packagename, classname| "J" + classname}

include_class("java.lang.ClassNotFoundException")

begin

JClass.forName("org.apache.derby.jdbc.EmbeddedDriver")

connection = JavaSql::DriverManager.getConnection("jdbc:derby:JRubyDB;create=true",

          "",

          "")

rescue ClassNotFoundException

puts "ClassNotFoundException"

rescue JavaSql::SQLException

puts "SQLException"

end

"")

第一个更改是为 ClassNotFoundException 添加了 include_class。由于将处理该异常,因此脚本需要知道异常类的存在。无需为 SQLException 单独使用一个 include,因为已通过 include_package 'java.sql' 包含该异常。Ruby 中的异常是按照类似于 Java 的方法来处理的。您有一个开头为 begin 而不是 try、结尾为 end 而不是 } 的块。使用 rescue,而不是使用 catch。那些更改就是与第一个版本的代码的其余差别。代码的流程应当看起来仍然熟悉。rescue 块中做的全部操作就是打印异常类型。很明显,在现实世界中您将对那些异常做一些更有用的操作,但是这将引领您入门。

第一个更改是为 添加了 。由于将处理该异常,因此脚本需要知道异常类的存在。无需为 单独使用一个 include,因为已通过 包含该异常。Ruby 中的异常是按照类似于 Java 的方法来处理的。您有一个开头为 而不是 、结尾为 而不是 的块。使用 ,而不是使用 。那些更改就是与第一个版本的代码的其余差别。代码的流程应当看起来仍然熟悉。 块中做的全部操作就是打印异常类型。很明显,在现实世界中您将对那些异常做一些更有用的操作,但是这将引领您入门。

使用 JDBC 与数据进行交互

在此部分中,将了解如何用 Derby 和 JDBC 检索和插入数据,以及如何通过 JRuby 使用 JDBC 事务。

使用 JRuby 从 Derby 检索数据

既然可连接至 Derby,下一步是使用 JDBC 提取数据。在 JRuby 中执行此操作的代码类似于纯 Java 代码 —— 仍要编写 JDBC 代码,只是通过另一种语言来调用它。必要的步骤包括:创建一条语句,执行查询,并迭代 ResultSet。创建连接后,需要将清单 5 中所示的五行代码添加到代码中。像以前一样,无需声明变量的类型。这段代码几乎与纯 Java 代码完全相同。惟一的差别在于略微更改循环语法以及使用 puts 而不使用 System.out.println

清单5:使用 JDBC 从 Derby 中检索数据

            

stmt = connection.createStatement()

rs = stmt.executeQuery("select name from employees")

while (rs.next()) do

puts rs.getString("name")

end

使用 PreparedStatement 也很简单。用清单 6 中所示的代码行替代上面几行代码中的前两行。

清单6:使用 PreparedStatement 

            

preparedStmt=connection.prepareStatement("select name from employees where name like ?")

preparedStmt.setString(1, "J%")

rs = preparedStmt.executeQuery()

应当会得到以下输出:

应当会得到以下输出:

John Doe

Jane Jones

Julie Morgan

使用 JRuby 将数据插入 Derby

插入数据同样简单。使用 JDBC,先检索连接,然后添加清单 7 中所示的两行。

清单7:插入数据

            

insertStmt = connection.createStatement()

insertStmt.execute("insert into employees values (11,

'James Cotton',

'Research Associate',

'Lab 1')");

运行代码后,应当会打印以下结果:

运行代码后,应当会打印以下结果:

John Doe

Jane Jones

Julie Morgan

James Cotton

更新和删除都遵循相同的范式,使用 Statement 或 PreparedStatement。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有