class Sequel::ODBC::Database

  1. lib/sequel/adapters/odbc.rb
Parent: ODBC

Constants

DISCONNECT_ERRORS = /\A08S01/.freeze  
DRV_NAME_GUARDS = '{%s}'.freeze  
GUARDED_DRV_NAME = /^\{.+\}$/.freeze  

Public Instance methods

connect (server)
[show source]
# File lib/sequel/adapters/odbc.rb, line 12
def connect(server)
  opts = server_opts(server)
  conn = if opts.include?(:drvconnect)
    ::ODBC::Database.new.drvconnect(opts[:drvconnect])
  elsif opts.include?(:driver)
    Deprecation.deprecate("The odbc driver's handling of the :driver option is thought to be broken and will probably be removed in the future. If you are successfully using it, please contact the developers.")
    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
    ::ODBC::Database.new.drvconnect(drv)
  else
    ::ODBC::connect(opts[:database], opts[:user], opts[:password])
  end
  conn.autocommit = true
  conn
end
disconnect_connection (c)
[show source]
# File lib/sequel/adapters/odbc.rb, line 34
def disconnect_connection(c)
  c.disconnect
end
execute (sql, opts=OPTS)
[show source]
# File lib/sequel/adapters/odbc.rb, line 38
def execute(sql, opts=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=OPTS)
[show source]
# File lib/sequel/adapters/odbc.rb, line 52
def execute_dui(sql, opts=OPTS)
  synchronize(opts[:server]) do |conn|
    begin
      log_yield(sql){conn.do(sql)}
    rescue ::ODBC::Error, ArgumentError => e
      raise_error(e)
    end
  end
end