我初次使用ruby连接sql server,使用的是dbi,可是ruby1.8版本的,对sql server支持的并不是太好。
可以不使用dbi,而使用win32ole
:
require "win32ole"
class MssqlDb
attr_accessor :mdb, :connection, :data, :fields
def initialize(host,mdb,user,pass)
@host= host
@mdb=@database= mdb
@username= user
@password= pass
@connection = nil
@data = nil
@fields = nil
end
def open
connection_string = "Provider=SQLOLEDB.1;User ID=#@username;password=#@password;Data Source=#@host,1433;Initial Catalog=#@mdb"
@connection = WIN32OLE.new('ADODB.Connection')
@connection.Open(connection_string)
# @password=''
end
def query(sql)
recordset = WIN32OLE.new('ADODB.Recordset')
recordset.Open(sql, @connection)
@fields = []
recordset.Fields.each do |field|
@fields << field.Name
end
begin
@data = recordset.GetRows.transpose
rescue
@data = []
end
recordset.Close
end
def execute(sql)
@connection.Execute(sql)
end
def close
@connection.Close
end
end
ACCESS:
require "win32ole"
class AccessDb
attr_accessor :mdb, :connection, :data, :fields
def initialize(mdb=nil)
@mdb = mdb
@connection = nil
@data = nil
@fields = nil
end
def open
connection_string = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
connection_string << @mdb
@connection = WIN32OLE.new('ADODB.Connection')
@connection.Open(connection_string)
end
def query(sql)
recordset = WIN32OLE.new('ADODB.Recordset')
recordset.Open(sql, @connection)
@fields = []
recordset.Fields.each do |field|
@fields << field.Name
end
begin
@data = recordset.GetRows.transpose
rescue
@data = []
end
recordset.Close
end
def execute(sql)
@connection.Execute(sql)
end
def close
@connection.Close
end
end
用法:
db = MssqlDb.new(host,database,username,password)
db.open
db.query(sql)
field_names = db.fields
#p field_names.join ' '
rows = db.data
#p rows.methods.sort.join(' ')
rows.size.times{|i| p rows.fetch i }
分享到:
相关推荐
ruby 1.8 API; 包括ruby的核心内容.
在使用Ruby 1.8进行开发时,开发者可以利用MRI(Matz's Ruby Interpreter)作为默认解释器,也可以选择JRuby(基于Java平台的实现)或Rubinius(使用LLVM作为后端的实现)来获取不同的性能特性。Ruby 1.8版本虽然已...
本书详尽但并不拘泥于语言规范,既适合首次接触Ruby的资深程序员,同样也适合那些想要挑战对这门语言的理解并更深入掌握它的Ruby程序员。本书首先通过一个快速指南带您熟悉这门语言,然后彻底解释它的细节,包括: ...
这意味着你可以使用相同的Ruby代码来处理Oracle数据库,就像处理其他支持DBI的数据库一样。 要安装Ruby/OCI8库,非Windows系统的开发者可以通过命令`sudo gem install ruby-oci8`进行安装。对于Windows用户,由于...
Ruby/DBI 是一个符合 DBI 模式(数据库独立接口)的库,它提供了一个统一的接口来访问多种数据库,从而实现了数据库的抽象化。通过DBI,开发者可以无需关注底层数据库的细节,而专注于编写与数据库交互的业务逻辑。...
在Ruby on Rails框架中,数据库配置是至关重要的部分,它允许开发者与各种数据库系统进行交互,如MySQL、Microsoft SQL Server等。以下将详细介绍如何在Windows环境下安装Ruby on Rails以及配置数据库。 首先,我们...
此外,由于DataObjects遵循统一的接口,第三方库和框架也可以更容易地集成它,以实现更强大的数据库访问能力。 在"do-master"这个压缩包中,包含了DataObjects项目的源代码和其他相关文件。开发者可以通过研究这些...
Ruby 1.8.6 是一个古老的 Ruby 语言版本,发布于2009年,主要为Windows用户提供安装程序。这个版本在当时是许多开发者和...但在开发新项目时,应优先考虑使用最新稳定版的Ruby,以获得更好的性能、安全性和社区支持。
`ruby-oci8`是Ruby社区开发的一个开源Gem,它实现了oci8接口,使得Ruby程序员能够方便地在Oracle数据库上执行SQL查询和事务处理。这个Gem支持多种操作系统,包括Windows(通过mingw32或mswin32编译)和Linux/Unix等...
在Ruby的世界中,DBI是一个强大的工具,它简化了数据库操作,使得开发者能专注于业务逻辑而不是数据库的细节。同时,由于DBI的兼容性,你可以选择适合项目的任何数据库,而不用担心代码需要大规模修改。总的来说,...
模型(Model)类可以帮助你实现ORM(对象关系映射),使得数据库操作更像操作Ruby对象。 ```ruby # 定义模型 class User one_to_many :orders end # 操作模型 user = User.new(name: 'Jane') user.save # 保存到...
Ruby 版数据库连接池, 可以参考。 数据库是postgresql
此外,Multiverse还支持数据库路由,允许你在运行时动态切换数据库,这在处理临时的性能需求或者故障转移时非常有用。通过`Multiverse::Routing`模块,你可以根据业务逻辑或负载情况动态地将请求路由到合适的数据库...
Ruby-SQLite3是Ruby编程语言的一个扩展库,它提供了对SQLite3嵌入式数据库的直接访问。SQLite3是一款轻量级、自包含的数据库引擎,可以在无需服务器进程的情况下运行,广泛应用于移动设备、嵌入式系统以及桌面应用...
ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm
接着,开发者需要理解生物信息学的基本概念,如基因、蛋白质、同源性等,以便正确设计数据库模式并实现相应的数据操作。这可能涉及到对BLAST(Basic Local Alignment Search Tool)或HMMER(Hidden Markov Model-...
这是一个基于Ruby/DBI(数据库接口模块)的数据库驱动程序,能够实现Ruby与Oracle数据库之间的交互。 - **Ruby DBI**:提供了一个与数据库无关的接口,类似于JDBC或ODBC,使得Ruby程序可以统一的方式访问各种数据库...