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

Methods

connect   dataset   do   execute   execute_dui   new  

Constants

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

Public Class methods

[Source]

    # File lib/sequel/adapters/odbc.rb, line 12
12:       def initialize(opts)
13:         super
14:         case @opts[:db_type]
15:         when 'mssql'
16:           Sequel.ts_require 'adapters/odbc/mssql'
17:           extend Sequel::ODBC::MSSQL::DatabaseMethods
18:           set_mssql_unicode_strings
19:         when 'progress'
20:           Sequel.ts_require 'adapters/shared/progress'
21:           extend Sequel::Progress::DatabaseMethods
22:         end
23:       end

Public Instance methods

[Source]

    # File lib/sequel/adapters/odbc.rb, line 25
25:       def connect(server)
26:         opts = server_opts(server)
27:         if opts.include? :driver
28:           drv = ::ODBC::Driver.new
29:           drv.name = 'Sequel ODBC Driver130'
30:           opts.each do |param, value|
31:             if :driver == param and not (value =~ GUARDED_DRV_NAME)
32:               value = DRV_NAME_GUARDS % value
33:             end
34:             drv.attrs[param.to_s.upcase] = value.to_s
35:           end
36:           db = ::ODBC::Database.new
37:           conn = db.drvconnect(drv)
38:         else
39:           conn = ::ODBC::connect(opts[:database], opts[:user], opts[:password])
40:         end
41:         conn.autocommit = true
42:         conn
43:       end

[Source]

    # File lib/sequel/adapters/odbc.rb, line 45
45:       def dataset(opts = nil)
46:         ODBC::Dataset.new(self, opts)
47:       end
do(sql, opts={})

Alias for execute_dui

[Source]

    # File lib/sequel/adapters/odbc.rb, line 49
49:       def execute(sql, opts={})
50:         synchronize(opts[:server]) do |conn|
51:           begin
52:             r = log_yield(sql){conn.run(sql)}
53:             yield(r) if block_given?
54:           rescue ::ODBC::Error, ArgumentError => e
55:             raise_error(e, :disconnect=>DISCONNECT_ERRORS.match(e.message))
56:           ensure
57:             r.drop if r
58:           end
59:           nil
60:         end
61:       end

[Source]

    # File lib/sequel/adapters/odbc.rb, line 63
63:       def execute_dui(sql, opts={})
64:         synchronize(opts[:server]) do |conn|
65:           begin
66:             log_yield(sql){conn.do(sql)}
67:           rescue ::ODBC::Error, ArgumentError => e
68:             raise_error(e, :disconnect=>DISCONNECT_ERRORS.match(e.message))
69:           end
70:         end
71:       end

[Validate]