新手问题 帮我看看这个脚本怎么用的

juventusryp · 2012年11月09日 · 最后由 juventusryp 回复于 2012年11月10日 · 3074 次阅读

网上找了一个这样的代码,但是不知道怎么用,麻烦说的详细一点,本人小白,跪谢!

require 'win32ole'

class SqlServer # This class manages database connection and queries attr_accessor :connection, :data, :fields attr_writer :username, :password

def initialize(host, username = 'sa', password='') @connection = nil @data = nil @host = host @username = username @password = password end

def open(database) # Open ADO connection to the SQL Server database connection_string = "Provider=SQLOLEDB.1;" connection_string << "Persist Security Info=False;" connection_string << "User ID=#{@username};" connection_string << "password=#{@password};" connection_string << "Initial Catalog=#{database};" connection_string << "Data Source=#{@host};" connection_string << "Network Library=dbmssocn" @connection = WIN32OLE.new('ADODB.Connection') @connection.Open(connection_string) end

def query(sql) # Create an instance of an ADO Recordset recordset = WIN32OLE.new('ADODB.Recordset') # Open the recordset, using an SQL statement and the # existing ADO connection recordset.Open(sql, @connection) # Create and populate an array of field names @fields = [] recordset.Fields.each do |field| @fields << field.Name end begin # Move to the first record/row, if any exist recordset.MoveFirst # Grab all records @data = recordset.GetRows rescue @data = [] end recordset.Close # An ADO Recordset's GetRows method returns an array # of columns, so we'll use the transpose method to # convert it to an array of rows @data = @data.transpose end

def close @connection.Close end end

How to use it: db = SqlServer.new('localhost', 'sa', 'SOMEPASSWORD') db.open('Northwind') db.query("SELECT * from Customers;") puts field_names = db.fields cust = db.data puts cust.size puts cust[0].inspect db.close

How to 开始不就是用法么?

#1 楼 @chenge 是的啊。。本人小白 不知道怎么用 是在 cmd 里 ruby test。rb 这个文件 还是怎么弄 求详细说明

推荐你用 sublime,代码拷贝进去。ctrl+b 启动运行。

#3 楼 @chenge 你好 按着你说的做了后 如图所示 就没有反映了。请问下面该怎么办

Northwind 这个数据库有么?怎么没显示结果呢?

#5 楼 @chenge 你好,我的数据库安装在虚拟机里 我是在本机运行的 ruby 脚本 我是想在本机连接虚拟机里的 sql2005 不知道可以吗

这个有点高难了吧。还是先在一个环境下测试吧。

#7 楼 @chenge 哦 好的~谢谢了~

#6 楼 @juventusryp 怎么不可以,把 host 改了,不就是了哦

#9 楼 @small_fish__ 你好 今天我也想到这个原因了,可是添加了 host 后,现在运行脚本 什么反映也没有 请问一下是不是将下面三行改成 sql 服务器的主机名,sa 和密码就可以了?还是需要其他的步骤。(我本机已经可以 telnet 用户名 1433 成功) @host = host @username = username @password = password

可以考虑学习下 ruby 基础,这个脚本不复杂,都是基础的。

#11 楼 @chenge 是啊 再看呢~不过我这个人还是练习比较容易理解问题 所以才想点小脚本做做

db = SqlServer.new('localhost', 'sa', 'SOMEPASSWORD') db.open('Northwind') db.query("SELECT * from Customers;")

你看看这几句写对没。

#13 楼 @chenge 你好 应该是这里的问题 我就是这里的东西不知道怎么用 是把这几句话添加到脚本里面还是?

SqlServer.new('localhost', 'sa', 'SOMEPASSWORD'), 这一句参数换成你的机器上的,主机,帐号,密码。

#15 楼 @chenge 你好 你说的这个我知道,我现在不明白的是 sqlserver.new 这句话在哪里使用,是把这句话也添加到脚本里面吗

都在一个脚本,最简单。

#17 楼 @chenge 成功了 十分感谢帮助~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号