require 'win32ole'
class SqlServer
# This class manages database connection and queries
attr_accessor :connection, :data, :fields
def initialize
@connection = nil
@data = nil
end
def open
# Open ADO connection to the SQL Server database
connection_string = "Provider=SQLOLEDB.1;"
connection_string << "Persist Security Info=False;"
connection_string << "User ID=USER_ID;"
connection_string << "password=PASSWORD;"
connection_string << "Initial Catalog=DATABASE;"
connection_string << "Data Source=IP_ADDRESS;"
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
测试代码如下:
db = SqlServer.new
db.open
db.query("SELECT PLAYER FROM PLAYERS WHERE TEAM = 'REDS';")
field_names = db.fields
players = db.data
db.close
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
抄到的别人版本的:
MSSQL
require "dbi"
require "win32ole"
WIN32OLE.codepage = WIN32OLE::CP_UTF8
require 'iconv'
Re_cn=/[\x7f-\xff]/
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 queryGB(sql)
if sql=~ Re_cn
sql = utf8_to_gb(sql)
end
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 executeGB(sql)
if sql=~ Re_cn
sql = utf8_to_gb(sql)
end
@connection.Execute(sql)
end
def close
@connection.Close
end
def utf8_to_gb(s)
p 'conv to gb18030'
Iconv.conv("GB18030//IGNORE","UTF-8//IGNORE",s)
end
def gb_to_utf8(s)
p 'conv to utf8'
Iconv.conv("UTF-8//IGNORE","GB18030//IGNORE",s)
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)
p 'access open ok.'
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
分享到:
相关推荐
Linux平台下访问Windows平台的SQL Server数据库的方法.pdf
MyBatis 通过第三方Druid数据连接池连接SQL server 简单例子,使用代理数据源模式
常见的SQL Server连接失败错误以及解决方法,帮助你解决安装问题
Windows Server 2008 64位操作系统内SQL Server建立Linked Server连接Oracle
Windows Mobile 连接SQL SERVER数据库
此链接库针对使用机器码 API (ODBC、OLE DB 和 ADO) 的应用程序提供运行时间支持,以连接到 Microsoft SQL Server 2000、2005 或 2008。SQL Server Native Client 应该用来建立新的应用程序,或者加强需要利用新 SQL...
php7.0 sqlserver连接插件 windows mssql 11和13驱动包 git2.6 windows版本 php7.0 sqlserver连接插件 windows mssql 11和13驱动包 git2.6 windows版本 php7.0 sqlserver连接插件 windows mssql 11和13驱动包 git2.6...
SQL Server 2005 移动版(SQL Server Mobile)或SQL Server 2000 Windows CE 2.0版(SQL Server CE 2.0)的企业和个人用户如果计划与SQL Server 2000或SQL Server 2005数据库保持同步,需要在您运行Microsoft ...
windows自带powershell 连接mssql sqlserver 无需安装客户端。 自行修改IP、端口、账号、密码 使用命令:powershell -ExecutionPolicy unrestricted -File SqlserverQuery.ps1
SQL SERVER分为两种登录方式:WINDOWS身份验证登录及混合身份验证登录 以下是两种OLEDE方式的连接串: 混合身份验证登录 SQLca.dbms= ‘OLEDB’ //接口类型 SQLca.AutoCommit = false SQLca.LogPass = logpass ...
分别讨论了Sql Server 2005的连接问题的解决方法
WIN7连接sqlserver速度慢的解决办法
本文先介绍Windows XP SP2/SP3 下Microsoft SQL Server 2005 的安装及有关问题的解决方法,然后介绍Eclipse3.2 / 3.3 或 MyEclipse6.0 / 6.5 进行JDBC连接SQL Server 2005数据库的方法。
如何在Windows10机器上安装SQL Server,并使用Navicat连接。亲自测试流程,可正常走通。
sql server数据库连接jar包;SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows ...
SQL Server连接中的四个最常见错误 ---------------------------------- 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL...
php7.4版本适配SQL-server数据库的驱动,详细配置方式查看相应文档
之前连接了无数次,看了无数教程,说得非常非常复杂,但都都没连接成功,浪费... 说明:php_mssql.dll是PHP与SQL Server连接的函数库。ntwdblib.dll是连接SQL Server2005服务器的,上面两个文件版本必须与PHP版本相同。
jdbc下适用windows身份登录sqlserver数据库.
SQL Server 2000 Windows CE Edition (SQL Server CE) 2.0 是一个精简数据库,用于在本机模式或 .NET Framework 精简版中快速开发应用程序,从而将企业数据管理能力扩展到设备中。 本 SQL Server CE 下载软件包可...