Ruby连接使用windows下sql server数据库代码实例

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
(0)

相关推荐

  • 浅谈Ruby on Rails下的rake与数据库数据迁移操作

    不知道你有没有把数据迁移写入Migration文件的经历,相信无论是老鸟还是新手都这样干过吧.事实上,这样做并不是行不通,只不过这样的实践慢慢会给你引入一些不必要的麻烦. 一般认为db/migrate文件夹里的内容是关于你数据库Schema的演变过程,每个新的开发或线上环境都要通过这些Migration来构建可用的数据库.但如果这里装入了,负责细节的业务代码,比如一些历史遗留数据的迁移代码之类的,当一段时间后,数据库的结构变化了,但Migration没有跟着变化,渐渐的曾经的辅助代码,就成了垃圾

  • Ruby中访问SQL Server数据库的配置实例

    因为工作需要,要分析存放在SQL Server上的数据,所以不得不研究一下如何使用Ruby访问SQL Server,发现其实还是很简单的: 安装FreeTDS 下载FreeTDS源代码 解压编译安装: 复制代码 代码如下: ./configure --prefix=/usr/local/freetds && make && sudo make install 安装Tiny_TDS Tiny_TDS,安装和使用非常简单,推荐使用: 复制代码 代码如下: sudo gem in

  • ruby+nokogori抓取糗事百科前10页并存储进数据库示例

    ruby,nokogori,爬取糗事百科最新的10页加图片比并同时保存进文本跟数据库 复制代码 代码如下: #encoding:utf-8require "open-uri"require "nokogiri"require "mysql"@dbh=Mysql.real_connect("localhost","root","dengli","pachong")@fi

  • Ruby on Rails框架程序连接MongoDB的教程

    前边有介绍mongodb的安装以及ror项目的搭建,现在进行一下整合. 1.创建项目 创建项目时不再使用rails active_record支持 rails new todo -O 2.我们将要使用MongoMapper来驱动MongoDB到Rails 编辑GemFile,增加下面的内容 gem"mongo_mapper" 然后  执行 bundle install 安装gem bundle install 3.添加数据库链接 在config/initializer下面新建一个mon

  • 在Ruby程序中连接数据库的详细教程

    本章节将向您讲解如何使用 Ruby 访问数据库.Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口. DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口.DBI 在 Ruby 代码与底层数据库之间提供了一个抽象层,允许您简单地实现数据库切换.它定义了一系列方法.变量和规范,提供了一个独立于数据库的一致的数据库接口. DBI 可与下列进行交互: ADO (ActiveX Data Object

  • Ruby连接使用windows下sql server数据库代码实例

    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_st

  • Powershell访问SQL Server数据库代码实例

    支持所有版本的SQLserver. 你是否需要连接数据库?这里有一段代码演示如何查询和获取SQL数据,只需非常简单正确的配置你的账户信息.服务器地址及SQL语句就行: 复制代码 代码如下: $Database                       = 'Name_Of_SQLDatabase' $Server                         = '192.168.100.200' $UserName                         = 'DatabaseUs

  • Windows下Java调用可执行文件代码实例

    这篇文章主要介绍了Windows下Java调用可执行文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 缘起: 由于没有找到java转换文件的接口,因此使用java调用exe文件进行文件转换 public void convertFile(){ Runtime rn = Runtime.getRuntime(); Process p =null; try{ p = rn.exec("D:/convert/Convert.exe D:/c

  • C#连接SQL Server数据库的实例讲解

    C#连接数据库:Connection对象 1.Connection对象概述 Connection对象是一个连接对象,主要功能是建立与物理数据库的连接.其主要包括4种访问数据库的对象类,也可称为数据提供程序,分别介绍如下. SQL Server数据提供程序,位于System.Data.SqlClient命名空间. ODBC数据提供程序,位于System.Data.Odbc命名空间. OLEDB数据提供程序,位于System.Data.OleDb命名空间. Oracle数据提供程序,位于System

  • Windows和Linux系统下perl连接SQL Server数据库的方法

    本文将提供一些perl连接Microsoft SQL Server数据库的实例.perl脚本运行在Windows和Linux平台. Windows平台 如果在Windows平台下运行perl脚本,建议使用依赖DBI的两个模块包,提供标准的数据库接口模块. DBD::ODBC DBD::ADO 使用DBD::ODBC 如果选用DBD::ODBC,下面的实例代码将展示如何连接到SQL Server数据库: 复制代码 代码如下: use DBI;   # DBD::ODBC   my $dsn = '

  • sql server数据库中raiserror函数用法的详细介绍

    sql server数据库中raiserror函数的用法 server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误可以被程序捕捉到. raiserror的常用格式如下: raiserror('错误的描述',错误的严重级别代码,错误的标识,错误的描述中的参数的值(这个可以是多个),一些其它参数),在官方上的格式描述如下: RAISERROR ( { msg_id | msg_str | @local_variab

  • Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法

    本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: unixODBC FreeTDS pyodbc cx_Oracle 欢迎转载,请注明作者.出处. 作者:张正 QQ:176036317 如有疑问,欢迎联系. 本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQ

  • C#编程实现连接SQL SERVER数据库实例详解

    本文实例讲述了C#编程实现连接SQL SERVER数据库.分享给大家供大家参考,具体如下: 首先,在SQL SEVER里建立一个名为"Exercise"的数据库名,在该数据库下建立一张名为"lianxi"的表.好,现在开始写代码. 在FORM1里拖一个DATAGIRDVIEW用于显示表,在放一个BUTTON用于执行操作.加入命名空间 复制代码 代码如下: using system.data.sqlclient; private void button1_Click(

  • python连接sql server数据库的方法实战

    目录 一.安装第三方模块 二.连接数据库 三.遇到的问题 总结 一.安装第三方模块 首先要下载名为"pymssql"的模块,然后import该模块 安装方法 :1.第一种方法:按win+r----> 输入cmd—>输入以下命令即可 pip install pymssql 2.第二种方法:打开pycharm,点击File,再点击settings,点击settings之后再点击project下面的project Interpreter,在界面中点击+号,直接搜索pymssql模

  • windows系统下SQL Server 2008超详细安装教程

    目录 1.解压文件后,双击setup.exe安装文件 2.打开后点击界面左侧的[安装],然后点击右侧的[全新SQL Server 独立安装或向现有安装添加功能] 3.进入[SQL Server 2008 安装程序]界面,首先是[安装程序支持规则] 4.无异常后点击“确定” 5.进入“产品密钥”页面 6.阅读软件许可条款,选择我接受许可条款,否则将无法使用此软件,点击下一步 7.点击安装 8.安装成功后点击下一步 9.点击“全选”并下一步 10.进入[实例配置],全部选择默认,点击[下一步] 11

随机推荐