class DBI::DBD::ODBC::Database

See DBI::BaseDatabase.

Public Instance Methods

[]=(attr, value) click to toggle source

Additional Attributes on the DatabaseHandle:

  • AutoCommit: force a commit after each statement execution.

  • odbc_ignorecase: Be case-insensitive in operations.

  • odbc_timeout: Return after a certain time regardless of whether the operation returned anything.

# File lib/dbd/odbc/database.rb, line 96
def []=(attr, value)
    case attr
    when 'AutoCommit'
        @handle.autocommit(value)
    when 'odbc_ignorecase'
        @handle.ignorecase(value)
    when 'odbc_timeout'
        @handle.timeout(value)
    else
        if attr =~ /^odbc_/ or attr != /_/
            raise DBI::NotSupportedError, "Option '#{attr}' not supported"
        else # option for some other driver - quitly ignore
            return
        end
    end
    @attr[attr] = value
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
columns(table) click to toggle source

See DBI::BaseDatabase#columns. Additional Attributes:

  • nullable: boolean, true if NULLs are allowed in this column.

# File lib/dbd/odbc/database.rb, line 25
def columns(table)
    cols = []

    stmt = @handle.columns(table)
    stmt.ignorecase = true

    stmt.each_hash do |row|
        info = Hash.new
        cols << info

        info['name']      = row['COLUMN_NAME']
        info['type_name'] = row['TYPE_NAME']
        info['sql_type']  = row['DATA_TYPE']
        info['nullable']  = 
            case row['NULLABLE']
            when 1
                true
            when 0
                false
            else
                nil
            end
        info['precision'] = row['PRECISION']
        info['scale']     = row['SCALE']
    end

    stmt.drop
    cols
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
commit() click to toggle source
# File lib/dbd/odbc/database.rb, line 116
def commit
    @handle.commit
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
database_name() click to toggle source
# File lib/dbd/odbc/database.rb, line 12
def database_name
    @handle.get_info('SQL_DATABASE_NAME')
end
disconnect() click to toggle source
# File lib/dbd/odbc/database.rb, line 5
def disconnect
    @handle.rollback
    @handle.disconnect 
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
do(statement, *bindvars) click to toggle source
# File lib/dbd/odbc/database.rb, line 76
def do(statement, *bindvars)
    @handle.do(statement, *bindvars) 
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
execute(statement, *bindvars) click to toggle source
# File lib/dbd/odbc/database.rb, line 82
def execute(statement, *bindvars)
    stmt = @handle.run(statement, *bindvars) 
    DBI::DBD::ODBC::Statement.new(stmt, statement)
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
ping() click to toggle source
# File lib/dbd/odbc/database.rb, line 16
def ping
    @handle.connected?
end
prepare(statement) click to toggle source
# File lib/dbd/odbc/database.rb, line 70
def prepare(statement)
    DBI::DBD::ODBC::Statement.new(@handle.prepare(statement), statement)
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
rollback() click to toggle source
# File lib/dbd/odbc/database.rb, line 122
def rollback
    @handle.rollback
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end
tables() click to toggle source
# File lib/dbd/odbc/database.rb, line 57
def tables
    stmt = @handle.tables
    stmt.ignorecase = true
    tabs = [] 
    stmt.each_hash {|row|
        tabs << row["TABLE_NAME"]
    }
    stmt.drop
    tabs
rescue DBI::DBD::ODBC::ODBCErr => err
    raise DBI::DatabaseError.new(err.message)
end