中国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数据库应用程序的两种方法(5)
作者:佚名 时间:2007-09-26 15:37 出处:ibmbw 责编:月夜寒箫
              摘要:在JRuby中构建Apache Derby数据库应用程序的两种方法(5)

在 JRuby 中使用 ActiveRecord

使用 ActiveRecord 需要做的第一件事是连接至 Derby。在文本编辑器中打开一个新文件,并将其命名为 activeRecord.rb。输入清单 9 中所示的代码。

清单9:用 ActiveRecord 连接至 Derby

            

require "rubygems"

require_gem "activerecord"

require 'jdbc_adapter'

ActiveRecord::Base.establish_connection(:adapter => "jdbc" ,

:driver => "org.apache.derby.jdbc.EmbeddedDriver" ,

:url => "jdbc:derby:JRubyDB;create=true" )

ActiveRecord::Base.remove_connection()

让我们一次查看一行代码:

让我们一次查看一行代码:

◆require "rubygems" —— 第一行将导入一组工具,这组工具将允许您把 gem 导入到代码中。需要使用这段代码才能引入 activerecord gem。

◆require_gem "activerecord" —— 第二行将导入 ActiveRecord gem。

◆require 'jdbc_adapter' —— 第三行将引入 ActiveRecord-JDBC 适配器。

◆ActiveRecord::Base.establish_connection(:adapter => "jdbc" , :driver =>"org.apache.derby.jdbc.EmbeddedDriver" , :url => "jdbc:derby:JRubyDB;create=true" ) —— 这行代码将把 ActiveRecord 连接至 Derby。establish_connection 方法将获取实参的变量列表,在 JDBC 连接的情况下包括适配器名称、驱动程序和 JDBC URL。适配器名称用于告诉 ActiveRecord 查找 JDBC 适配器并使用它,这点与 MySQL 或 Oracle 正好相反。驱动程序和 URL 参数都是 JDBC 建立连接所需的数据。如果使用了一个 ActiveRecord 的内置适配器,则需要在 establish_connection 方法中使用不同的参数。

◆ActiveRecord::Base.remove_connection() —— 最后一行用于断开连接。在此情况下,这样做实在没必要,因为脚本已退出,JVM 也已退出,因此连接将被破坏 —— 但这是个很好的习惯。

如果按照原样运行此脚本,则不会按照预期得到输出。除了建立连接并随后断开连接之外,您没有对 ActiveRecord 执行任何操作,因此这也合情合理。

使用 ActiveRecord 与数据进行交互

此部分将说明用 ActiveRecord 如何检索 Derby 中的数据和将输入插入 Derby 以及如何使用 ActiveRecord 事务。

使用 ActiveRecord 从 Derby 中检索数据

下一步是从数据库中提取所有雇员,从这里事情将开始变得有趣起来。将清单 10 中所示的代码行添加到脚本的 establish_connection 调用和 remove_connection 调用之间。

清单10:从数据库中提取所有雇员

            

class Employee < ActiveRecord::Base

end

emps = Employee.find(:all)

emps.each do |emp|

puts emp.name

end

如果现在运行脚本,将获得一张所有雇员的清单,如下所示:

Fred Smith

John Doe

Jane Jones

Sam Smiles

Julie Morgan

Wilma Fonda

Danielle Jamison

Michele Cannon

Lance Hanniford

Eliot Rinaggio

James Cotton

刚刚发生了什么事?让我们来看一看添加的代码:

◆前两行声明了一个名为 Employee 的类,该类是从 ActiveRecord::Base 扩展而来。

     ◆find 方法是 ActiveRecord::Base 附带的一种方法并且为您提供一种灵活搜索所需雇员的方法。它将返回一个匹配指定条件的雇员数组 —— 在本例中为所有雇员。

     ◆each 方法是 Ruby 实现迭代器范式的方法。正如您在阅读时所期望的,对于返回的每个雇员,其名称都被输出到控制台。

ActiveRecord 如何知道要连接到哪张表,或者如何知道有一个关于雇员的名称字段?这是 ActiveRecord 魔术的一部分。它使用逻辑默认值来猜测哪一张是数据库表。由于将类命名为了 Employee,因此 ActiveRecord 将默认查找名为 employees 的表。同样地,它将使用某种形式的反射来获得列名并使用这些列名作为对象的属性,除非您告诉它不这样做。

要查看 ActiveRecord 能够实现的更多功能,通过将条件添加到 find 方法中,使用本教程中较早时候提到的 PreparedStatement 语句,来添加要使用的限制,以便只返回姓名开头为 J 的雇员。要执行此操作,请将 Employee.find 行更改为 emps = Employee.find(:all, :conditions => "name like 'J%'")

这将告诉 ActiveRecord 查找满足条件的所有记录。ActiveRecord 有一组强大的功能,可以帮助您缩小查找对象的范围。

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