class Sequel::ODBC::Database

Constants

DISCONNECT_ERRORS
DRV_NAME_GUARDS
DatasetClass
GUARDED_DRV_NAME

Public Instance Methods

connect(server) click to toggle source
# File lib/sequel/adapters/odbc.rb, line 12
def connect(server)
  opts = server_opts(server)
  if opts.include? :driver
    drv = ::ODBC::Driver.new
    drv.name = 'Sequel ODBC Driver130'
    opts.each do |param, value|
      if :driver == param and not (value =~ GUARDED_DRV_NAME)
        value = DRV_NAME_GUARDS % value
      end
      drv.attrs[param.to_s.upcase] = value.to_s
    end
    db = ::ODBC::Database.new
    conn = db.drvconnect(drv)
  else
    conn = ::ODBC::connect(opts[:database], opts[:user], opts[:password])
  end
  conn.autocommit = true
  conn
end
disconnect_connection(c) click to toggle source
# File lib/sequel/adapters/odbc.rb, line 32
def disconnect_connection(c)
  c.disconnect
end
do(*a, &block) click to toggle source
# File lib/sequel/adapters/odbc.rb, line 59
def do(*a, &block)
  Sequel::Deprecation.deprecate('Database#do', 'Please use Database#execute_dui')
  execute_dui(*a, &block)
end
execute(sql, opts={}) { |r| ... } click to toggle source
# File lib/sequel/adapters/odbc.rb, line 36
def execute(sql, opts={})
  synchronize(opts[:server]) do |conn|
    begin
      r = log_yield(sql){conn.run(sql)}
      yield(r) if block_given?
    rescue ::ODBC::Error, ArgumentError => e
      raise_error(e)
    ensure
      r.drop if r
    end
    nil
  end
end
execute_dui(sql, opts={}) click to toggle source
# File lib/sequel/adapters/odbc.rb, line 50
def execute_dui(sql, opts={})
  synchronize(opts[:server]) do |conn|
    begin
      log_yield(sql){conn.do(sql)}
    rescue ::ODBC::Error, ArgumentError => e
      raise_error(e)
    end
  end
end

Private Instance Methods

adapter_initialize() click to toggle source
# File lib/sequel/adapters/odbc.rb, line 66
def adapter_initialize
  case @opts[:db_type]
  when 'mssql'
    Sequel.require 'adapters/odbc/mssql'
    extend Sequel::ODBC::MSSQL::DatabaseMethods
    self.dataset_class = Sequel::ODBC::MSSQL::Dataset
    set_mssql_unicode_strings
  when 'progress'
    Sequel.require 'adapters/shared/progress'
    extend Sequel::Progress::DatabaseMethods
    extend_datasets(Sequel::Progress::DatasetMethods)
  when 'db2'
    Sequel.require 'adapters/shared/db2'
    extend ::Sequel::DB2::DatabaseMethods
    extend_datasets ::Sequel::DB2::DatasetMethods
  end
end
connection_execute_method() click to toggle source
# File lib/sequel/adapters/odbc.rb, line 84
def connection_execute_method
  :do
end
database_error_classes() click to toggle source
# File lib/sequel/adapters/odbc.rb, line 88
def database_error_classes
  [::ODBC::Error]
end
disconnect_error?(e, opts) click to toggle source
Calls superclass method Sequel::Database#disconnect_error?
# File lib/sequel/adapters/odbc.rb, line 92
def disconnect_error?(e, opts)
  super || (e.is_a?(::ODBC::Error) && DISCONNECT_ERRORS.match(e.message))
end