Sha256: 828a2330fae2ec1622b91a30b1eaf2ed6074534d744893398becbae334fb644b

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

module Treport
  class Db
    AdapterType={
        Mysql: "mysql2",
        PostgreSQL: "postgresql",
        Sqlserver: "sqlserver",
        Oracle: "oracle"
    }

    def self.adapter_options
      [["Mysql", AdapterType[:Mysql]], ["PostgreSQL", AdapterType[:PostgreSQL]], ["Sqlserver", AdapterType[:Sqlserver]], ["Oracle", AdapterType[:Oracle]]]
    end

    def self.oracle_query(conectstr, sql)
      require 'ruby-oci8'
      result = []
      conn = OCI8.new(conectstr[:username], conectstr[:password], "#{conectstr[:host]}:#{conectstr[:port]}/#{conectstr[:database]}")
      cursor = conn.parse(sql)
      cursor.exec
      while r = cursor.fetch_hash()
        r.each do |n, v|
          unless v
            r[n] = "其他"
          end
        end
        result << r
      end
      result
    end

    def self.mysql_query(conectstr, sql)
      result = []
      Mysql2::Client.new(conectstr).query(sql).each do |r|
        result << r
      end
      result
    end

    def self.sqlserver_query(conectstr, sql)
      connstr = {}
      conectstr.each { |k, v| connstr[k.to_sym]=v }
      result = []
      TinyTds::Client.new(connstr).execute(sql).each do |row|
        result << row
      end
      result
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
treport-0.2.0 lib/treport/db.rb
treport-0.1.0 lib/treport/db.rb