Class: DBI::BaseDatabase
Overview
Provides the core-level functionality for DatabaseHandles.
If the method description says “DBD Required”, it’s the DBD’s responsibility to create this method.
Required methods unimplemented by the DBD will raise DBD::NotImplementedError.
“DBD Optional” methods are methods that do not have a default implementation but are optional due to the fact that many databases may not support these features (and emulating them would be prohibitive).
These methods raise DBI::NotSupportedError.
Otherwise, DBI will provide a general alternative which should meet the expectations of the documentation. However, DBDs can override every method in this class.
Instance Method Summary collapse
- 
  
    
      #[](attr)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Get an attribute from the DatabaseHandle. 
- 
  
    
      #[]=(attr, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set an attribute on the DatabaseHandle. 
- 
  
    
      #columns(table)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return a map of the columns that exist in the provided table name. 
- 
  
    
      #commit  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Schedule a commit to the database immediately. 
- 
  
    
      #disconnect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Disconnect from the database. 
- 
  
    
      #do(statement, *bindvars)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Execute and complete the statement with the binds provided. 
- 
  
    
      #execute(statement, *bindvars)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Execute a statement with the binds provided. 
- 
  
    
      #initialize(handle, attr)  ⇒ BaseDatabase 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of BaseDatabase. 
- 
  
    
      #ping  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Ping the database to ensure the connection is still alive. 
- 
  
    
      #prepare(statement)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Prepare a cached statement, returning a StatementHandle. 
- 
  
    
      #rollback  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Schedule a rollback to the database immediately. 
- 
  
    
      #tables  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return the tables available to the database connection. 
Constructor Details
#initialize(handle, attr) ⇒ BaseDatabase
Returns a new instance of BaseDatabase.
| 21 22 23 24 25 | # File 'lib/dbi/base_classes/database.rb', line 21 def initialize(handle, attr) @handle = handle @attr = {} attr.each {|k,v| self[k] = v} end | 
Instance Method Details
#[](attr) ⇒ Object
Get an attribute from the DatabaseHandle. These are DBD specific and embody things like Auto-Commit support for transactional databases.
- DBD Authors
- 
This messes with @attr directly. 
| 126 127 128 | # File 'lib/dbi/base_classes/database.rb', line 126 def [](attr) @attr[attr] end | 
#[]=(attr, value) ⇒ Object
Set an attribute on the DatabaseHandle. DBD Optional.
| 131 132 133 | # File 'lib/dbi/base_classes/database.rb', line 131 def []=(attr, value) raise NotSupportedError end | 
#columns(table) ⇒ Object
Return a map of the columns that exist in the provided table name. DBD Required.
The result should be an array of DBI::ColumnInfo objects which have, at minimum, the following fields:
- name
- 
the name of the column. 
 
- type
- 
This is not a field name in itself. You have two options: 
 - type_name
- 
The name of the type as returned by the database 
 
- dbi_type
- 
A DBI::Type-conforming class that can be used to convert to a native type. 
 
 
- precision
- 
the precision (generally length) of the column 
 
- scale
- 
the scale (generally a secondary attribute to precision 
 - that helps indicate length) of the column 
| 59 60 61 | # File 'lib/dbi/base_classes/database.rb', line 59 def columns(table) raise NotImplementedError end | 
#commit ⇒ Object
Schedule a commit to the database immediately. DBD Optional.
| 68 69 70 | # File 'lib/dbi/base_classes/database.rb', line 68 def commit raise NotSupportedError end | 
#disconnect ⇒ Object
Disconnect from the database. DBD Required.
| 28 29 30 | # File 'lib/dbi/base_classes/database.rb', line 28 def disconnect raise NotImplementedError end | 
#do(statement, *bindvars) ⇒ Object
Execute and complete the statement with the binds provided. Returns the row modified count (via BaseStatement#rows). Finishes the statement handle for you.
Roughly equivalent to:
sth = dbh.prepare("my statement")
sth.execute(my, bind, vars)
result = sth.rows
sth.finish
Returning the value stored in ‘result`.
| 113 114 115 116 117 118 | # File 'lib/dbi/base_classes/database.rb', line 113 def do(statement, *bindvars) stmt = execute(statement, *bindvars) res = stmt.rows stmt.finish return res end | 
#execute(statement, *bindvars) ⇒ Object
Execute a statement with the binds provided. Returns the statement handle unfinished.
This is roughly equivalent to:
sth = dbh.prepare("my statement")
sth.execute(my, bind, vars)
| 93 94 95 96 97 98 | # File 'lib/dbi/base_classes/database.rb', line 93 def execute(statement, *bindvars) stmt = prepare(statement) stmt.bind_params(*bindvars) stmt.execute stmt end | 
#ping ⇒ Object
Ping the database to ensure the connection is still alive. Boolean return, true for success. DBD Required.
| 34 35 36 | # File 'lib/dbi/base_classes/database.rb', line 34 def ping raise NotImplementedError end | 
#prepare(statement) ⇒ Object
Prepare a cached statement, returning a StatementHandle. DBD Required.
| 40 41 42 | # File 'lib/dbi/base_classes/database.rb', line 40 def prepare(statement) raise NotImplementedError end | 
#rollback ⇒ Object
Schedule a rollback to the database immediately. DBD Optional.
| 73 74 75 | # File 'lib/dbi/base_classes/database.rb', line 73 def rollback raise NotSupportedError end | 
#tables ⇒ Object
Return the tables available to the database connection.
- Note
- 
the basic implementation returns an empty array. 
| 80 81 82 | # File 'lib/dbi/base_classes/database.rb', line 80 def tables [] end |