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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql
, 数据库
, windows
, server
, ruby
连接使用
sql server数据库实例、sqlserver数据库实例、ruby on rails 数据库、ruby 数据库、ruby 数据库操作,以便于您获取更多的相关知识。

时间: 2024-11-10 13:59:40

Ruby连接使用windows下sql server数据库代码实例_ruby专题的相关文章

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

  这篇文章主要介绍了Ruby连接使用windows下sql server数据库代码实例,本文直接给出实现代码,而且给出了两种实现和access数据库的实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 req

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

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

ASP.NET2.0中将文件上传到SQL Server数据库代码

SQL Server数据库代码   <%@ Page Language="C#" EnableViewState="true" %> <%@ Import Namespace="System.Data.SqlClient" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

java连接sql server数据库代码

  //链接数据库代码 import java.sql.*; public class Connect { static Connection conn; static Statement sql; static ResultSet res; static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; static String dbURL="jdbc:sqlserver://127.0.0

使用Ruby on Rails快速开发web应用的教程实例_ruby专题

 Ruby on Rails 正在令整个 Web 开发领域受到震憾.让我们首先了解底层的技术:     Ruby 是一门免费的.简单的.直观的.可扩展的.可移植的.解释的脚本语言,用于快速而简单的面向对象编程.类似于 Perl,它支持 处理文本文件和执行系统管理任务的很多特性.     Rails 是用 Ruby 编写的一款完整的.开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序. 作为一个完整的框架,这意味着 Rails 中的所有的层都是为协同工作而构造的,所以

收集的多个ruby遍历文件夹代码实例_ruby专题

一.遍历文件夹下所有文件,输出文件名 复制代码 代码如下: def traverse_dir(file_path)     if File.directory? file_path         Dir.foreach(file_path) do |file|             if file !="." and file !=".."                 traverse_dir(file_path+"/"+file)   

Ruby使用设计模式中的代理模式与装饰模式的代码实例_ruby专题

代理模式 需求: 小明让小李替他追小丽(送洋娃娃,送花,送巧克力) 没有代理的代码: # -*- encoding: utf-8 -*- #追求者类 class Pursuit attr_accessor :mm def initialize(mm) @mm = mm end def give_dolls puts "#{mm.name} 送你洋娃娃" end def give_flowers puts "#{mm.name} 送你鲜花" end def give_

Ruby设计模式编程中使用Builder建造者模式的实例_ruby专题

先来复习一下设计模式的基本概念:定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 建造者隐藏了该产品是如何组装的,所以若需要改变一个产品的内部表示,只需要重新定一个建造者就可以了.实用范围1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 2.当构造过程必须允许被构造的对象有不同表示时.角色在这样的设计模式中,有以下几个角色: 1.builder:为创建一个产品对象的各个部件指定抽象接口. 2.ConcreteBuilder:实现Builder

Ruby中用线程实现经典的生产者消费者问题代码实例_ruby专题

示例代码: 复制代码 代码如下: require "thread" puts "ProAndCon"    queue = Queue.new    #用队列Queue实现线程同步     producer = Thread.new do     10.times do |i|          sleep rand(i) # 让线程睡眠一段时间          queue << i          puts "#{i} produced&