- 浏览: 1399729 次
- 性别:
- 来自: 火星
文章分类
最新评论
-
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 2125一个小技巧,在Ola Bini 的blog上看到的。 假设你 ... -
解决Colored Cubes问题
2008-06-02 10:43 2784Engineering Puzzle You have fo ... -
ruby1.9中的Iterators
2008-03-05 22:37 3717在ruby1.9中增加了External Iterators这 ... -
一个简单的ruby Metaprogram的例子
2008-03-03 23:49 4102比如下面一个文件 people.txt 引用name,age ... -
Ruby Object Model
2008-03-03 19:29 3572刚好看到,保存一下. -
一个检测方法的参数类型的小程序
2008-03-02 22:48 3248今天没事看blog的时候,看到一个小子实现了这个,不过他的程序 ... -
rails中的BlankSlate源码分析
2008-02-28 23:27 3445其实这个类实现的功能很简单,那就是实现一个没有predefin ... -
ruby中的类变量与类实例变量
2008-02-26 21:15 7633首先,在ruby1.8中类变量是所有子类和父类共享的,可以看下 ... -
在ubuntu上共存多个版本的ruby
2008-02-24 15:20 4376今天装Revactor库的时候,真把我郁闷了,没想到ubunt ... -
看到了一个用ruby写的scheme解释器
2008-02-16 21:35 3768,自己本来想等啥时候有时间做个类似的东西呢,没想到已经有人做 ... -
ruby way之处理RSS和Atom
2008-01-31 01:32 35191 rss 标准库 RSS 是基于xml的,因此你能简单的将 ... -
ruby way之使用REXML解析xml
2008-01-30 00:35 9252REXML 是一个完全用ruby写的processor ,他有 ... -
rails2中的一些被废弃的用法
2008-01-29 00:33 2541这些只是自己最近看web开发敏捷之道的时候(由于书中的版本是1 ... -
ruby way之动态特性之二
2008-01-25 00:49 36781 得到所定义的实体的列表 ruby的反射api能够使我们在 ... -
ruby way之动态特性之一
2008-01-23 01:25 45381 动态的evaluate代码 全局的方法eval 编译并且 ... -
ruby way之高级OOP特性之二
2008-01-20 03:43 29491 把代码像对象一样存储 当你想要以对象的形式存储一块代码的 ... -
ruby way之高级OOP特性之一
2008-01-19 12:14 22611 发送一条消息给一个对象 当你调用一个方法时,你也就是发送 ... -
ruby way之OOP之二
2008-01-16 23:59 23621 理解allocate 在一些特殊的环境中,你可能需要不调 ... -
ruby way之OOP之一
2008-01-16 00:25 26301 使用多个构造方法 在ruby中没有像c++或者ruby中 ... -
ruby way之高级数据存取
2008-01-13 02:31 3730经常我们需要以一种更 ...
相关推荐
本资源汇总将详细介绍如何使用Ruby进行数据库连接,尤其是通过Ruby/DBI库。 首先,我们来了解一下Ruby/DBI(Database Independent Interface)。Ruby/DBI 是一个符合 DBI 模式(数据库独立接口)的库,它提供了一个...
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
在这个文件中,你需要定义各个环境(如development、test和production)下的数据库连接参数。例如: ```yaml development: adapter: oci host: xe username: development password: password test: adapter: ...
在IT行业中,数据库连接是开发过程中的重要环节,特别是在使用编程语言如Ruby进行Web开发时。本篇文章将深入探讨如何使用Ruby与Drizzle数据库建立连接,以及相关的源码和工具应用。 Ruby是一种动态、面向对象的编程...
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
DBI,全称“Database Independent Interface”,是Ruby中一个用于数据库操作的重要库。它提供了一个统一的接口,允许开发者通过简单的API与多种数据库系统进行交互,如MySQL、PostgreSQL、SQLite等,无需关心底层...
此外,通过使用连接池,Sequel能够管理数据库连接,确保在高并发场景下的性能表现。 总的来说,Ruby-Sequel是一个全面的数据库工具包,无论是小型项目还是大型应用,都能提供高效、便捷的数据库访问能力。它的易用...
在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行安装: ```bash sudo apt-get install mysql-server ``` 在安装过程中,系统会提示输入MySQL...
在Ruby中连接到Microsoft SQL Server数据库,你可以使用tiny_tds或者odbc等gem。附件是使用tiny_tds gem的一个基本示例 请将your_server_name、your_database_name、your_username、your_password和your_table_name...
总的来说,配置Ruby on Rails的数据库涉及到安装必要的数据库驱动和Rails框架,然后在`database.yml`文件中正确设定数据库连接参数。理解这个过程对于开发基于Rails的应用程序至关重要,因为这使得Rails能够与各种...
2. **连接管理(Connection Management)**:DataObjects提供了连接池管理功能,用于高效地管理和复用数据库连接,以提高性能并确保资源的有效利用。 3. **命令对象(Command Objects)**:这是执行SQL命令的对象,...
由于目前尚未出现类似于Java瘦驱动的纯Ruby驱动程序,因此要使Ruby与Oracle数据库建立连接,就需要依赖于**Ruby/Oracle调用接口(OCI8)库**。这是一个基于Ruby/DBI(数据库接口模块)的数据库驱动程序,能够实现...
Ruby on Rails:数据库设计与迁移教程.docx
Ruby直系同源基因数据库是一种基于Ruby编程语言构建的专业数据库系统,主要用于存储、管理和分析生物信息学中的直系同源基因数据。直系同源基因是指在进化过程中通过垂直遗传保持了相似序列的一组基因,它们反映了...
Ruby-SQLite3是Ruby编程语言的一个扩展库,它提供了对SQLite3嵌入式数据库的直接访问。SQLite3是一款轻量级、自包含的数据库引擎,可以在无需服务器进程的情况下运行,广泛应用于移动设备、嵌入式系统以及桌面应用...
在Rails中,通过修改`config/database.yml`文件,可以轻松地配置Oracle数据库连接,使得Ruby on Rails应用能够与Oracle数据库进行数据交互。同时,注意保持数据库客户端库和Ruby/OCI8驱动的兼容性,以确保稳定的数据...
rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库 rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库rubywork ruby编程例子 逻辑 IO 数据库
一旦安装成功,`ruby-oci8`提供了简单的API来创建数据库连接,执行SQL语句,处理结果集等。例如: ```ruby require 'oci8' conn = OCI8.new('username', 'password', 'database') cursor = conn.exec('SELECT * ...