- 浏览: 1386582 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
aidd:
内核处理time_wait状态详解 -
ahtest:
赞一下~~
一个简单的ruby Metaprogram的例子 -
itiProCareer:
简直胡说八道,误人子弟啊。。。。谁告诉你 Ruby 1.9 ...
ruby中的类变量与类实例变量 -
dear531:
还得补充一句,惊群了之后,数据打印显示,只有一个子线程继续接受 ...
linux已经不存在惊群现象 -
dear531:
我用select试验了,用的ubuntu12.10,内核3.5 ...
linux已经不存在惊群现象
这边都只是个大概,具体的要自己去看文档了.
1 连接SQLite:
2连接mysql:
3连接到PostgreSQL:
4 连接到LDAP:
ruby中至少有3种LDAP库这里只介绍两种:
5 连接到oracle
我们可以使用OCI8库,它可以支持oracle8之后的版本:
下面是查询的例子:
6 使用DBI包装器
理论上,DBI允许你以数据库无关的方式存取你的数据库.不管你的数据库是Oracle, MySQL, PostgreSQL 还是其他,访问的代码都是一样的。他有时是不能处理比较复杂的或则某个数据库独有的特性。
这里假设我们使用的是oracle数据库:
7 ORMs
ruby中有两种流行的orm框架ActiveRecord和Og。
ActiveRecord是以Martin Fowler所定义的ActiveRecord设计模式所命名的.每一个数据库表,都是一个继承ActiveRecord::Base的一个类.
og和ActiveRecord 的不同是,后者主要是针对数据库,而前者主要是以面向对象为核心.
当我们需要定义一个存储的类时,我们能够使用property 方法:
连接数据库:
每一个对象都有一个save方法来插入数据库数据:
还有一些描述传统数据库中的对象关系的方法:
1 连接SQLite:
require 'sqlite' db = SQLite::Database.new("library.db") db.execute("select title,author from books") do |row| p row end db.close
2连接mysql:
require 'mysql' m = Mysql.new("localhost","name","password","maillist") r = m.query("SELECT * FROM people ORDER BY name") r.each_hash do |f| print "#{f['name']} - #{f['email']}" end
3连接到PostgreSQL:
require 'postgres' conn = PGconn.connect("",5432, "", "", "testdb") conn.exec("create table rtest ( number integer default 0 );") conn.exec("insert into rtest values ( 99 )") res = conn.query("select * from rtest") # res id [["99"]]
4 连接到LDAP:
ruby中至少有3种LDAP库这里只介绍两种:
conn = LDAP::Conn.new("rsads02.foo.com") conn.bind("CN=username,CN=Users,DC=foo,DC=com","password") do |bound| bound.search("DC=foo,DC=com", LDAP::LDAP_SCOPE_SUBTREE, "(&(name=*) (objectCategory=person))", ['name','ipPhone']) do |user| puts "#{user['name']} #{user['ipPhone']}" end end
require 'net/ldap' ldap = Net::LDAP.new :host => server_ip_address, :port => 389, :auth => { :method => :simple, :username => "cn=manager,dc=example,dc=com", :password => "opensesame" } filter = Net::LDAP::Filter.eq( "cn", "George*" ) treebase = "dc=example,dc=com" ldap.search( :base => treebase, :filter => filter ) do |entry| puts "DN: #{entry.dn}" entry.each do |attribute, values| puts " #{attribute}:" values.each do |value| puts " --->#{value}" end end end p ldap.get_operation_result
5 连接到oracle
我们可以使用OCI8库,它可以支持oracle8之后的版本:
require 'oci8' session = OCI8.new('user', 'password') query = "SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL" cursor = session.exec(query) result = cursor.fetch # Only one iteration in this case cursor.close session.logoff
下面是查询的例子:
session = OCI8.new("user","password") query = "select * from people where name = :name" # One way... session.exec(query,'John Smith') # Another... cursor = session.parse(query) cursor.exec('John Smith') # And another... cursor = session.parse(query) cursor.bind_param(':name','John Smith') # bind by name cursor.exec # And another. cursor = session.parse(query) cursor.bind_param(1,'John Smith') # bind by position cursor.exec
6 使用DBI包装器
理论上,DBI允许你以数据库无关的方式存取你的数据库.不管你的数据库是Oracle, MySQL, PostgreSQL 还是其他,访问的代码都是一样的。他有时是不能处理比较复杂的或则某个数据库独有的特性。
这里假设我们使用的是oracle数据库:
require "dbi" db = DBI.connect("dbi:OCI8:mydb", "user", "password") query = "select * from people" stmt = db.prepare(query) stmt.execute while row = stmt.fetch do puts row.join(",") end stmt.finish db.disconnect
7 ORMs
ruby中有两种流行的orm框架ActiveRecord和Og。
ActiveRecord是以Martin Fowler所定义的ActiveRecord设计模式所命名的.每一个数据库表,都是一个继承ActiveRecord::Base的一个类.
require 'active_record' ActiveRecord::Base.establish_connection(:adapter => "oci8", :username => "username", :password => "password", :database => "mydb", :host => "myhost") class SomeTable < ActiveRecord::Base set_table_name "test_table" set_primary_key "some_id" end SomeTable.find(:all).each do |rec| # process rec as needed... end item = SomeTable.new item.id = 1001 item.some_column = "test" item.save
og和ActiveRecord 的不同是,后者主要是针对数据库,而前者主要是以面向对象为核心.
当我们需要定义一个存储的类时,我们能够使用property 方法:
class SomeClass property :alpha, String property :beta, String property :gamma, String end
连接数据库:
db = Og::Database.new(:destroy => false, :name => 'mydb', :store => :mysql, :user => 'hal9000', :password => 'chandra')
每一个对象都有一个save方法来插入数据库数据:
obj = SomeClass.new obj.alpha = "Poole" obj.beta = "Whitehead" obj.gamma = "Kaminski" obj.save
还有一些描述传统数据库中的对象关系的方法:
class Dog has_one :house belongs_to :owner has_many :fleas end
发表评论
-
一个创建闭包的小技巧
2008-06-05 00:12 2077一个小技巧,在Ola Bini 的blog上看到的。 假设你 ... -
解决Colored Cubes问题
2008-06-02 10:43 2733Engineering Puzzle You have fo ... -
ruby1.9中的Iterators
2008-03-05 22:37 3659在ruby1.9中增加了External Iterators这 ... -
一个简单的ruby Metaprogram的例子
2008-03-03 23:49 4038比如下面一个文件 people.txt 引用name,age ... -
Ruby Object Model
2008-03-03 19:29 3490刚好看到,保存一下. -
一个检测方法的参数类型的小程序
2008-03-02 22:48 3211今天没事看blog的时候,看到一个小子实现了这个,不过他的程序 ... -
rails中的BlankSlate源码分析
2008-02-28 23:27 3399其实这个类实现的功能很简单,那就是实现一个没有predefin ... -
ruby中的类变量与类实例变量
2008-02-26 21:15 7567首先,在ruby1.8中类变量是所有子类和父类共享的,可以看下 ... -
在ubuntu上共存多个版本的ruby
2008-02-24 15:20 4338今天装Revactor库的时候,真把我郁闷了,没想到ubunt ... -
看到了一个用ruby写的scheme解释器
2008-02-16 21:35 3699,自己本来想等啥时候有时间做个类似的东西呢,没想到已经有人做 ... -
ruby way之处理RSS和Atom
2008-01-31 01:32 34711 rss 标准库 RSS 是基于xml的,因此你能简单的将 ... -
ruby way之使用REXML解析xml
2008-01-30 00:35 9187REXML 是一个完全用ruby写的processor ,他有 ... -
rails2中的一些被废弃的用法
2008-01-29 00:33 2488这些只是自己最近看web开发敏捷之道的时候(由于书中的版本是1 ... -
ruby way之动态特性之二
2008-01-25 00:49 36071 得到所定义的实体的列表 ruby的反射api能够使我们在 ... -
ruby way之动态特性之一
2008-01-23 01:25 44451 动态的evaluate代码 全局的方法eval 编译并且 ... -
ruby way之高级OOP特性之二
2008-01-20 03:43 28841 把代码像对象一样存储 当你想要以对象的形式存储一块代码的 ... -
ruby way之高级OOP特性之一
2008-01-19 12:14 22001 发送一条消息给一个对象 当你调用一个方法时,你也就是发送 ... -
ruby way之OOP之二
2008-01-16 23:59 23031 理解allocate 在一些特殊的环境中,你可能需要不调 ... -
ruby way之OOP之一
2008-01-16 00:25 25931 使用多个构造方法 在ruby中没有像c++或者ruby中 ... -
ruby way之高级数据存取
2008-01-13 02:31 3660经常我们需要以一种更 ...
相关推荐
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
Ruby 连接数据库资源汇总。包括有:Ruby连接Mysql,oracle,postgreSQL,sqlite等包.还有ruby/DBI. 有GEM包,也有源代码包。
本章节将向您讲解如何使用 Ruby 访问数据库。Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口。 DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口。DBI 在 Ruby ...
本人学习总结的ruby on rails 3.1.0数据库类查询方法,比较全了
要连接到Oracle数据库,用户必须安装 Ruby/Oracle 调用接口 (OCI8) 库——一个基于 Ruby/DBI (数据库接口模块)的数据库驱动程序。RubyDBI 提供了一个与数据库无关的、类似于 JDBC 或 ODBC 的接口,来实现 Ruby 和...
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
ruby对应数据库的必需gems包,包括最新的3个版本的dbi源码和gems安装包
一个简单,灵活且功能强大用于Ruby的SQL数据库访问工具包
the ruby way 2ed. the ruby way 2ed.
rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库 rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库
the ruby way the ruby way
SQLite3 - Ruby绑定SQLite3嵌入式数据库
DataObjects - 企图重写现有的Ruby数据库驱动程序符合一个标准接口
NULL 博文链接:https://like-eagle.iteye.com/blog/1012870
ruby on rails 安装 组件下载 连接mysql mssql等数据库 包含一个完整的一对多数据库例子方案
TheRubyWay(Ruby之道)英文版 Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.pdf
11.5 时间日期the ruby way.rar
ruby中操作oracle数据库使用的oci8技术相关的gems包,包括3个版本