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 18
18:       def connect(server)
19:         opts = server_opts(server)
20:         conn = if opts.include?(:drvconnect)
21:           ::ODBC::Database.new.drvconnect(opts[:drvconnect])
22:         elsif opts.include?(:driver)
23:           drv = ::ODBC::Driver.new
24:           drv.name = 'Sequel ODBC Driver130'
25:           opts.each do |param, value|
26:             if :driver == param and not (value =~ GUARDED_DRV_NAME)
27:               value = DRV_NAME_GUARDS % value
28:             end
29:             drv.attrs[param.to_s.upcase] = value.to_s
30:           end
31:           ::ODBC::Database.new.drvconnect(drv)
32:         else
33:           ::ODBC::connect(opts[:database], opts[:user], opts[:password])
34:         end
35:         conn.autocommit = true
36:         conn
37:       end

[Source]

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

[Source]

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

[Source]

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

[Validate]