Dispatch classes (Handle, DriverHandle, DatabaseHandle and StatementHandle)
VERSION | = | "0.4.3" | ||
DEFAULT_TRACE_MODE | = | 2 | Module functions (of DBI) | |
DEFAULT_TRACE_OUTPUT | = | STDERR | ||
SQL_FETCH_NEXT | = | 1 | Constants for fetch_scroll | |
SQL_FETCH_PRIOR | = | 2 | ||
SQL_FETCH_FIRST | = | 3 | ||
SQL_FETCH_LAST | = | 4 | ||
SQL_FETCH_ABSOLUTE | = | 5 | ||
SQL_FETCH_RELATIVE | = | 6 | ||
SQL_CHAR | = | 1 | SQL type constants | |
SQL_NUMERIC | = | 2 | ||
SQL_DECIMAL | = | 3 | ||
SQL_INTEGER | = | 4 | ||
SQL_SMALLINT | = | 5 | ||
SQL_FLOAT | = | 6 | ||
SQL_REAL | = | 7 | ||
SQL_DOUBLE | = | 8 | ||
SQL_DATE | = | 9 | ||
SQL_TIME | = | 10 | ||
SQL_TIMESTAMP | = | 11 | ||
SQL_VARCHAR | = | 12 | ||
SQL_BOOLEAN | = | 13 | ||
SQL_LONGVARCHAR | = | -1 | ||
SQL_BINARY | = | -2 | ||
SQL_VARBINARY | = | -3 | ||
SQL_LONGVARBINARY | = | -4 | ||
SQL_BIGINT | = | -5 | ||
SQL_TINYINT | = | -6 | ||
SQL_BIT | = | -7 | ||
SQL_BLOB | = | -10 | TODO Find types for these (XOPEN?)SQL_ARRAY = |
|
SQL_CLOB | = | -11 | ||
SQL_OTHER | = | 100 | SQL_DISTINCT = SQL_OBJECT = SQL_NULL = | |
SQL_TYPE_NAMES | = | { SQL_BIT => 'BIT', SQL_TINYINT => 'TINYINT', SQL_SMALLINT => 'SMALLINT', SQL_INTEGER => 'INTEGER', SQL_BIGINT => 'BIGINT', SQL_FLOAT => 'FLOAT', SQL_REAL => 'REAL', SQL_DOUBLE => 'DOUBLE', SQL_NUMERIC => 'NUMERIC', SQL_DECIMAL => 'DECIMAL', SQL_CHAR => 'CHAR', SQL_VARCHAR => 'VARCHAR', SQL_LONGVARCHAR => 'LONG VARCHAR', SQL_DATE => 'DATE', SQL_TIME => 'TIME', SQL_TIMESTAMP => 'TIMESTAMP', SQL_BINARY => 'BINARY', SQL_VARBINARY => 'VARBINARY', SQL_LONGVARBINARY => 'LONG VARBINARY', SQL_BLOB => 'BLOB', SQL_CLOB => 'CLOB', SQL_OTHER => nil, SQL_BOOLEAN => 'BOOLEAN', } | SQL_REF = SQL_STRUCT = |
Returns a list (of String) of the currently available drivers on your system in ‘dbi:driver:’ format.
This currently does not work for rubygems installations, please see DBI.collect_drivers for reasons.
# File lib/dbi.rb, line 203 203: def available_drivers 204: drivers = [] 205: collect_drivers.each do |key, value| 206: drivers.push("dbi:#{key}:") 207: end 208: return drivers 209: end
Return a list (of String) of the available drivers.
NOTE: | This is non-functional for gem installations, due to the nature of how it currently works. A better solution for this will be provided in DBI 0.6.0. |
# File lib/dbi.rb, line 184 184: def collect_drivers 185: drivers = { } 186: # FIXME rewrite this to leverage require and be more intelligent 187: path = File.join(File.dirname(__FILE__), "dbd", "*.rb") 188: Dir[path].each do |f| 189: if File.file?(f) 190: driver = File.basename(f, ".rb") 191: drivers[driver] = f 192: end 193: end 194: 195: return drivers 196: end
Establish a database connection.
Format goes as such: "dbi:Driver:database_conn_args"
# File lib/dbi.rb, line 144 144: def connect(driver_url, user=nil, auth=nil, params=nil, &p) 145: dr, db_args = _get_full_driver(driver_url) 146: dh = dr[0] # driver-handle 147: dh.convert_types = @@convert_types 148: @@last_connection = dh.connect(db_args, user, auth, params, &p) 149: end
Return the current status of type conversion at this level. This status will be propogated to any new DatabaseHandles created.
# File lib/dbi.rb, line 119 119: def self.convert_types 120: @@convert_types 121: end
Set the current status of type conversion at this level. This status will be propogated to any new DatabaseHandles created.
# File lib/dbi.rb, line 125 125: def self.convert_types=(bool) 126: @@convert_types = bool 127: end
Attempt to collect the available data sources to the driver, specified in DBI.connect format.
The result is heavily dependent on the driver‘s ability to enumerate these sources, and results will vary.
# File lib/dbi.rb, line 216 216: def data_sources(driver) 217: db_driver, = parse_url(driver) 218: db_driver = load_driver(db_driver) 219: dh = @@driver_map[db_driver][0] 220: dh.data_sources 221: end
Attempt to disconnect all database handles. If a driver is provided, disconnections will happen under that scope. Otherwise, all loaded drivers (and their handles) will be attempted.
# File lib/dbi.rb, line 228 228: def disconnect_all( driver = nil ) 229: if driver.nil? 230: @@driver_map.each {|k,v| v[0].disconnect_all} 231: else 232: db_driver, = parse_url(driver) 233: @@driver_map[db_driver][0].disconnect_all 234: end 235: end
Return the last connection attempted.
# File lib/dbi.rb, line 113 113: def self.last_connection 114: @@last_connection 115: end
Enable tracing mode. Requires that ‘dbi/trace’ be required before it does anything.
As of 0.4.0, this mode does not do anything either way, so this currently just throws an InterfaceError. This issue is expected to be resolved in the next release.
# File lib/dbi.rb, line 171 171: def trace(mode=nil, output=nil) 172: # FIXME trace 173: raise InterfaceError, "the trace module has been removed until it actually works." 174: @@trace_mode = mode || @@trace_mode || DBI::DEFAULT_TRACE_MODE 175: @@trace_output = output || @@trace_output || DBI::DEFAULT_TRACE_OUTPUT 176: end