Class: Sequel::ODBC::Database

Inherits:
Database
  • Object
show all
Defined in:
lib/sequel/adapters/odbc.rb

Instance Method Summary collapse

Instance Method Details

#connect(server) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sequel/adapters/odbc.rb', line 14

def connect(server)
  opts = server_opts(server)
  conn = if opts.include?(:drvconnect)
    ::ODBC::Database.new.drvconnect(opts[:drvconnect])
  elsif opts.include?(:driver)
    drv = ::ODBC::Driver.new
    drv.name = 'Sequel ODBC Driver130'
    opts.each do |param, value|
      if :driver == param && value !~ /\A\{.+\}\z/
        value = "{#{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) ⇒ Object



35
36
37
# File 'lib/sequel/adapters/odbc.rb', line 35

def disconnect_connection(c)
  c.disconnect
end

#execute(sql, opts = OPTS) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/sequel/adapters/odbc.rb', line 39

def execute(sql, opts=OPTS)
  synchronize(opts[:server]) do |conn|
    begin
      r = log_connection_yield(sql, conn){conn.run(sql)}
      yield(r) if defined?(yield)
    rescue ::ODBC::Error, ArgumentError => e
      raise_error(e)
    ensure
      r.drop if r
    end
    nil
  end
end

#execute_dui(sql, opts = OPTS) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/sequel/adapters/odbc.rb', line 53

def execute_dui(sql, opts=OPTS)
  synchronize(opts[:server]) do |conn|
    begin
      log_connection_yield(sql, conn){conn.do(sql)}
    rescue ::ODBC::Error, ArgumentError => e
      raise_error(e)
    end
  end
end