J2EE

Java/J2EE Struts Spring

常用链接

统计

最新评论

2008年12月31日 #

ROR学习笔记系列三 Rails数据库操作入门 ---Oracle 10g数据库操作

     最近由于忙于考研,所以是在是耽误了不少的时间和精力,所以造成了我脱离网络一段时间,搞得我是考研考的不好,结果这个学习的过程也给耽误了,哎....考研,原来真的不是儿戏...还是要复习的,原来以为考研应该随便看看的话在理想的估计差不多的吧...差不多每一科都及格了就好了...但是现在发现原来不是这个样子的....知识点太多了..一下子搞不定的..怪不得大家都是要复习那么长时间....看来下次如果要考研的话我一定要去好好复习一下...免得有对不起自己了,废话不多说了.现在开始这个学习笔记系列的第三个部分,使用Oracle 10g进行ROR的数据库操作.上次我们说了使用Mysql的环境.但是由于我现在项目开发中一直使用的是Oracle数据库,而且在两个都是大同小异.所以现在开始我们就是用Oracle数据库进行操作.必要的时候也会提及一下MySQL的

     首先,我们来安装一下Oracle的环境.主要是Ruby驱动和ActiveRecord adapter的支持.

    从rails 2.0开始, ActiveRecord对于商业数据库的adapter的支持已经取消了,只有Mysql和SQLlite的支持了吧.所以对于其他的部分的话要自己独立的安装,

安装activerecord-oracle-adapter使用下面的命令:

gem install activerecord-oracle-adapter --source http://gems.rubyonrails.org 

如果要安装sqlserver的话可以将oracle换成sqlserver进行安装

或者从下面下载加强版本的Adapter:

http://rubyforge.org/frs/?group_id=6212&release_id=22063 中下载最新版本1.1.9

http://rubyforge.org/frs/download.php/49541/activerecord-oracle_enhanced-adapter-1.1.9.gem

安装ruby-oci8驱动

gem install ruby-oci8

下载地址是:http://www.rubyforge.org/projects/ruby-oci8

好了,安装完成了之后我们可以使用一个ruby的测试,来查看我们是否安装成功!

require 'rubygems'
require 'active_record'
class Account < ActiveRecord::Base
  set_table_name "account" #设置表名
end
ActiveRecord::Base.establish_connection(
  :adapter  => "oracle",#数据库适配器
  :database => "xe",#数据库SID
  :username => "fonhal",#数据库用户名
  :password => "123123" #数据库用户密码
)
account = Account.find(:first,:conditions =>"USERID = 'j2ee'") #查询数据库
puts "#{account.userid}  #{ account.email}        #{ account.firstname}        " 
对于不同的用户要进行更换数据库的相关配置和表名.
如果成功的话测试结果如下:
image
 
好了,Oracle数据库驱动配置好了.现在我们开始一个简单的Rails和Oracle 数据库的链接的Demo吧!
1. 打开Aptana,然后创建一个Rails Project.数据源选择Oralce, 然后Rails版本选择2.2.2版本
image
2. 创建好项目之后我们使用可以scaffold产生一个Model和数据库迁移配置产生一个版本文件.如果我们不想使用这种方式那也可以的直接使用下面的命令进行数据库迁移:
rake db:migrate 
(如果这里不可以的话可能还是需要创建一个model或者使用scaffold进行创建.然后在使用上面的命令,因为我是之前使用过scaffold进行创建了一个Demo,所以在数据库中有一个schema_migrations的文件记录着当前用户的迁移版本信息.这样的话方便如果改变了表格等进行数据库的回滚操作.迁移到上一数据库表的版本.
这个时候会在db下产生一个schema.rb文件,里面记录着当前用户下的所有用户表的信息,例如:
ActiveRecord::Schema.define(:version => 20090114020840) do
 
  create_table "account", :primary_key => "userid", :force => true do |t|
    t.string "email",     :limit => 80, :null => false
    t.string "firstname", :limit => 80, :null => false
    t.string "lastname",  :limit => 80, :null => false
    t.string "status",    :limit => 2
    t.string "addr1",     :limit => 80, :null => false
    t.string "addr2",     :limit => 40
    t.string "city",      :limit => 80, :null => false
    t.string "state",     :limit => 80, :null => false
    t.string "zip",       :limit => 20, :null => false
    t.string "country",   :limit => 20, :null => false
    t.string "phone",     :limit => 80, :null => false
  end
end
在这个表里面就是当前用户的表信息,创建新的表的话应该也是可以在里面进行添加.和我们使用model创建的的迁移文件应该是一样的.
3.如果不想使用scaffold的话那现在如果上面的命令执行结束的话那就可以自己去建立页面然后进行操作,但是这样的话可能要浪费时间一点.下面我先给出一个使用scaffold的方式创建的Demo:
script/generate scaffold post title:string author:string description:text
产生一个post模型,并且在db/migrate/下产生一个迁移文件.文件名为当前的schema的版本,我们也是测试创建博客的例子.创建结束之后,当然还是进行数据库迁移操作,使用rake db:migrate进行数据库迁移.
4. 上面的操作好了之后的话启动服务器,选择servers Tab.然后找到当前项目名称对应的服务,然后选择启动,默认创建服务器的时候会使用mongle作为服务器,如果出现了服务器不能够启动的话可能是因为默认使用的3000端口已经有工程占用了.右键点击项目服务器选择 edit server更改端口号和他的其他配置都可以.启动服务器之后使用
http://127.0.0.1:3002/posts 来打开网页,我们可以看到POST的示例已经创建好了如图:
image
选择New Post可以创建新的post:
image
这样的话一个博客的Demo就创建好了!对于其中使用Scaffold创建的代码如果不想使用的话可以自己根据它的他妈进行创建自己的代码,不适用Scaffold的方式.这是创建了一个post后的预览.(貌似"过程"乱码了.....不是过稣..大家看看会不会出现乱码!)
image
不过我个人而言觉得使用Scaffold这种方式的话是一个很好的选择,当然对于以后熟悉了ROR的相关的一些知识之后,使用这种方式可能会很方便.但是如果对于初学者的话肯定都是愿意写自己的代码.好了.本次学习到此为止,现在大家已经基本上能够创建一个ROR的示例,并且和数据库进行对联,下一次我对于使用Scaffold创建的代码进行一个说明,并且创建不适用Scaffold的方式的给大家一个展示.
 

posted @ 2009-01-14 11:23 fonhal 阅读(1108) | 评论 (0)编辑 收藏

ROR 学习笔记系列二 基于ROR的简单Hello World程序入门

     摘要:      本篇是本系列的第二个教程,在本章里面我将就开发一个简单的ROR Hello World程序帮助大家入门,任何程序入门都会使用Hello World!这个程序设计里面的经典,使用率最高,几乎每个程序设计人员都写过.当然我个人写程序最入门的我也一般是先写一个Hello World程序来进行入门...好了,下面我们开始吧!    首先...  阅读全文

posted @ 2009-01-02 16:15 fonhal 阅读(640) | 评论 (0)编辑 收藏

ROR 学习笔记系列一 Windows XP下环境安装配置

    最近刚刚结束一个项目,闲着无聊,所以准备学习一下ROR给自己充一下电,在JavaEye上面看到ROR很久了,但是一直由于比较忙着一个Java的项目,所以也没有多关注,最近也是无意之间看见Robbin大哥关于2009年热门技术中关于ROR的预测,还有2009年的10项热门技术中都对Rails非常推崇,就连JavaEye本身也是基于ROR的.所以我想我也有必要去学习一下这门技术.不然真的会脱离IT这个行业(汗...20出头就被淘汰了..),好了废话不多说.首先介绍一下ROR(当然学习前提是对于Ruby和MVC都有所掌握...):

  • Ruby 是一门免费的、简单的、直观的、可扩展的、可移植的、解释的脚本语言,用于快速而简单的面向对象编程。类似于 Perl,它支持处理文本文件和执行系统管理任务的很多特性。
  • Rails 是用 Ruby 编写的一款完整的、开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序。
  • 好了,首先我们来搭建一下开发环境,我的开发环境是Windows XP Professional SP3 + ruby 1.8.6 + Rails 2.2.2 + Mongrel + MySQL 5.1:

    1. 首先我们安装Ruby,最好下载一个One-Click Installer,下载地址是http://rubyforge.org/frs/download.php/29263/ruby186-26.exe

    然后直接按照安装提示进行安装就好了.我的安装路径是C:\ruby\下,环境变量也会自动创建好.测试一下:

    image

    创建一个HelloWorld的rb测试文件.

    test.rb

    image

    helloworld = "Hello World!"
    puts helloworld;

    或者在FXRI中直接定义一个函数hello来打印输出:

    irb(main):007:0> def hello()
    irb(main):008:1>   puts "Hello World"
    irb(main):009:1>   end
    => nil
    irb(main):010:0> hello
    Hello World
    => nil

    或者在控制台中输入:

    C:\>ruby -e 'puts "Helllo World"'
    Helllo World

    都可以测试安装是否完成,如果能够正常运行程序,当然我们可以说他的环境是安装好的.

    在这种安装方式中已经是安装好了gem,可以使用gem update来对gem进行更新.更新所有的Gem安装文件,gem最新版本是1.3.1版本(在我写这篇文章的时候我还update了一下).

    2. 安装Rails,安装 Rails 我使用gem进行安装,如果网络不好的话就只能够下载安装了,gem安装方式如下:

    在命令行下输入:

    gem install rails –include-dependencies

    image

    使用Rails -v进行查看.

    image

    可以看到Rails已经成功安装了,

    如果网络不好的话可以自己下载Gem来进行本地安装,安装顺序和上面的安装顺序一样就好了.

    rake-0.8.3
    activesupport-2.2.2
    activerecord-2.2.2
    actionpack-2.2.2
    actionmailer-2.2.2
    activeresource-2.2.2
    rails-2.2.2

    自己到  http://rubyforge.org/projects/ 进行搜索查找,主意版本之间依赖.

    3. 安装Mongrel 作为我们的ROR Web Server.服务器我们使用Mongrel,不使用默认的Webrick,因为在速度上面便利性上Webrick都不如Mongrel,所以我们选择Mongrel

    安装方法还是使用Gem的方式安装:

    gem install mongrel –include-dependencies

    安装Mongrel_service:

    gem install mongrel_service –include-dependencies

    目前最新版本是:

    mongrel (1.1.5)
    mongrel_service (0.3.4)

    在命令行下输入:

    mongrel_rails service::install -N WebServer -c E:\WebSites -e development

    来创建服务,-N 表示Windows NT的服务名. WebServer是创建的Windows 服务名, –c 后面跟本地路径 E:\WebSites  然后-e表示环境,我们选择的development开发环境,也可以选择test测试环境或者production产品环境.

    这样的话你就可以在Windows的服务中找到WebServer这个服务了,和正常启动Windows服务的方式一样来启动Mongrel服务.

    删除服务使用:

    mongrel_rails service::remove -N WebServer

    4.安装Mysql 数据库, 下载地址:http://dev.mysql.com/downloads/mysql

    http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.1/mysql-5.1.30-win32.zip

    安装完成侯使用Config Wizard进行配置.配置完成之后把Lib/opt下的ibmySQL.dll拷贝到Ruby的bin目录下,

    在MySQL命令行中创建数据库:

    create database WebServer_development;

    创建完成之后退出.

    然后安装MySQL 的Ruby驱动,使用Gem安装方式:

    gem install mysql

    通过Gem可以安装的最新版本2.7.3版本,实际上最新已经是2.8版本的.但是不能够通过Gem方式安装.安装2.7.3在结束的时候会出现一个问题就是创建rdoc的时候由一个问

    题,这个问题不影响MySQL驱动的使用,所以也不要太在意.安装完成之后退出.或者到网址http://rubyforge.org/projects/mysql-win下载mysql-2.7.3-mswin32.gem本地安装使用的Gem命令(在当前的mysql驱动所在路径下)是:gem install –l mysql-2.7.3-mswin32.gem 或者不用-l他会在本地查找.

      到现在为止全部的环境都已经安装完毕!有什么不妥之处,敬请指正,本人也是带着学习的目的,和大家一起进步,同时也是对自己学习的过程进行一个记录,希望能够对别人有帮助,请勿拍砖!下一篇我将就开发一个简单的Hello World程序来进行演示.

    posted @ 2009-01-02 12:37 fonhal 阅读(949) | 评论 (2)编辑 收藏

    PL\SQL 打开时出现"动态执行表不可访问,本会话的自动统计被禁止"错误解决

    最近做J2ee开发的时候使用PL/SQL,但是每次第一次打开表的时候会提示"动态执行表不可访问,本会话的自动统计被禁止"的错误,一消息如下: V$SESSION,V$SESSTAT,V$STATNAME没有被授权,没有权限访问这几张表,所以没有本法进行统计.当然要给授权了.授权SQL如下:

    grant select on v_$statname to user;
    grant select on v_$sesstat to user;
    grant select on v_$session to user;
    grant select on v_$mystat to user;

    user就是要被授权的用户名.记下以备后用.

    posted @ 2008-12-31 18:08 fonhal 阅读(2386) | 评论 (0)编辑 收藏