Class Sequel::ODBC::Database
In: lib/sequel/adapters/odbc.rb
Parent: Sequel::Database

Methods

Constants

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

Public Instance methods

[Source]

    # File lib/sequel/adapters/odbc.rb, line 16
16:       def connect(server)
17:         opts = server_opts(server)
18:         conn = if opts.include?(:drvconnect)
19:           ::ODBC::Database.new.drvconnect(opts[:drvconnect])
20:         elsif opts.include?(:driver)
21:           drv = ::ODBC::Driver.new
22:           drv.name = 'Sequel ODBC Driver130'
23:           opts.each do |param, value|
24:             if :driver == param and not (value =~ GUARDED_DRV_NAME)
25:               value = DRV_NAME_GUARDS % value
26:             end
27:             drv.attrs[param.to_s.upcase] = value.to_s
28:           end
29:           ::ODBC::Database.new.drvconnect(drv)
30:         else
31:           ::ODBC::connect(opts[:database], opts[:user], opts[:password])
32:         end
33:         conn.autocommit = true
34:         conn
35:       end

[Source]

    # File lib/sequel/adapters/odbc.rb, line 37
37:       def disconnect_connection(c)
38:         c.disconnect
39:       end

[Source]

    # File lib/sequel/adapters/odbc.rb, line 41
41:       def execute(sql, opts=OPTS)
42:         synchronize(opts[:server]) do |conn|
43:           begin
44:             r = log_yield(sql){conn.run(sql)}
45:             yield(r) if block_given?
46:           rescue ::ODBC::Error, ArgumentError => e
47:             raise_error(e)
48:           ensure
49:             r.drop if r
50:           end
51:           nil
52:         end
53:       end

[Source]

    # File lib/sequel/adapters/odbc.rb, line 55
55:       def execute_dui(sql, opts=OPTS)
56:         synchronize(opts[:server]) do |conn|
57:           begin
58:             log_yield(sql){conn.do(sql)}
59:           rescue ::ODBC::Error, ArgumentError => e
60:             raise_error(e)
61:           end
62:         end
63:       end

[Validate]