File: driver.rb

package info (click to toggle)
ruby-dbd-odbc 0.2.5%2Bgem2deb-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 276 kB
  • ctags: 118
  • sloc: ruby: 1,083; sql: 52; makefile: 2
file content (38 lines) | stat: -rw-r--r-- 1,052 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#
# See DBI::BaseDriver
#
class DBI::DBD::ODBC::Driver < DBI::BaseDriver
    def initialize
        super("0.4.0")
    end

    def data_sources
        ::ODBC.datasources.collect {|dsn| "dbi:ODBC:" + dsn.name }
    rescue DBI::DBD::ODBC::ODBCErr => err
        raise DBI::DatabaseError.new(err.message)
    end

    def connect(dbname, user, auth, attr)
        driver_attrs = dbname.split(';')

        if driver_attrs.size > 1
            # DNS-less connection
            drv = ::ODBC::Driver.new
            drv.name = 'Driver1'
            driver_attrs.each do |param|
                pv = param.split('=')
                next if pv.size < 2
                drv.attrs[pv[0]] = pv[1]
            end
            db = ::ODBC::Database.new
            handle = db.drvconnect(drv)
        else
            # DNS given
            handle = ::ODBC.connect(dbname, user, auth)
        end

        return DBI::DBD::ODBC::Database.new(handle, attr)
    rescue DBI::DBD::ODBC::ODBCErr => err
        raise DBI::DatabaseError.new(err.message)
    end
end