Class | DBI::BaseDatabase |
In: |
lib/dbi/base_classes/database.rb
|
Parent: | Base |
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.
# File lib/dbi/base_classes/database.rb, line 21 21: def initialize(handle, attr) 22: @handle = handle 23: @attr = {} 24: attr.each {|k,v| self[k] = v} 25: end
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. |
# File lib/dbi/base_classes/database.rb, line 126 126: def [](attr) 127: @attr[attr] 128: end
Set an attribute on the DatabaseHandle. DBD Optional.
# File lib/dbi/base_classes/database.rb, line 131 131: def []=(attr, value) 132: raise NotSupportedError 133: end
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:
# File lib/dbi/base_classes/database.rb, line 59 59: def columns(table) 60: raise NotImplementedError 61: end
Disconnect from the database. DBD Required.
# File lib/dbi/base_classes/database.rb, line 28 28: def disconnect 29: raise NotImplementedError 30: end
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`.
# File lib/dbi/base_classes/database.rb, line 113 113: def do(statement, *bindvars) 114: stmt = execute(statement, *bindvars) 115: res = stmt.rows 116: stmt.finish 117: return res 118: end
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)
# File lib/dbi/base_classes/database.rb, line 93 93: def execute(statement, *bindvars) 94: stmt = prepare(statement) 95: stmt.bind_params(*bindvars) 96: stmt.execute 97: stmt 98: end
Ping the database to ensure the connection is still alive. Boolean return, true for success. DBD Required.
# File lib/dbi/base_classes/database.rb, line 34 34: def ping 35: raise NotImplementedError 36: end
Prepare a cached statement, returning a StatementHandle. DBD Required.
# File lib/dbi/base_classes/database.rb, line 40 40: def prepare(statement) 41: raise NotImplementedError 42: end