abstract class DB::Connection
- DB::Connection
- Reference
- Object
Overview
Database driver implementors must subclass Connection
.
Represents one active connection to a database.
Users should never instantiate a Connection
manually. Use DB#open
or Database#connection
.
Refer to QueryMethods
for documentation about querying the database through this connection.
Note to implementors
The connection must be initialized in #initialize
and closed in #do_close
.
Override #build_prepared_statement
method in order to return a prepared Statement
to allow querying.
Override #build_unprepared_statement
method in order to return a unprepared Statement
to allow querying.
See also Statement
to define how the statements are executed.
If at any give moment the connection is lost a DB::ConnectionLost should be raised. This will allow the connection pool to try to reconnect or use another connection if available.
Included Modules
Defined in:
db/connection.crdb/error.cr
Constructors
Instance Method Summary
-
#begin_transaction : Transaction
Creates a transaction from the current context.
-
#prepared_statements? : Bool
Returns whether by default the statements should be prepared or not.
-
#release
return this connection to the pool managed by the database.
Instance methods inherited from module DB::BeginTransaction
begin_transaction : Transaction
begin_transaction,
transaction(& : Transaction -> T) : T? forall T
transaction
Instance methods inherited from module DB::SessionMethods(DB::Connection, DB::Statement)
build(query) : Stmt
build,
build_unprepared_statement(query) : Stmt
build_unprepared_statement,
fetch_or_build_prepared_statement(query) : Stmt
fetch_or_build_prepared_statement,
prepared(query)prepared prepared, prepared_statements? : Bool prepared_statements?, unprepared(query)
unprepared unprepared
Instance methods inherited from module DB::QueryMethods(DB::Statement)
exec(query, *args_, args : Array? = nil)
exec,
query(query, *args_, args : Array? = nil)query(query, *args_, args : Array? = nil, &) query, query_all(query, *args_, args : Array? = nil, &block : ResultSet -> U) : Array(U) forall U
query_all(query, *args_, args : Array? = nil, as types : Tuple)
query_all(query, *args_, args : Array? = nil, as types : NamedTuple)
query_all(query, *args_, args : Array? = nil, as type : Class) query_all, query_each(query, *args_, args : Array? = nil, &) query_each, query_one(query, *args_, args : Array? = nil, &block : ResultSet -> U) : U forall U
query_one(query, *args_, args : Array? = nil, as types : Tuple)
query_one(query, *args_, args : Array? = nil, as types : NamedTuple)
query_one(query, *args_, args : Array? = nil, as type : Class) query_one, query_one?(query, *args_, args : Array? = nil, &block : ResultSet -> U) : U? forall U
query_one?(query, *args_, args : Array? = nil, as types : Tuple)
query_one?(query, *args_, args : Array? = nil, as types : NamedTuple)
query_one?(query, *args_, args : Array? = nil, as type : Class) query_one?, scalar(query, *args_, args : Array? = nil) scalar
Instance methods inherited from module DB::Disposable
close
close,
closed?
closed?
Constructor Detail
Instance Method Detail
Creates a transaction from the current context.
If is expected that either Transaction#commit
or Transaction#rollback
are called explicitly to release the context.
Returns whether by default the statements should be prepared or not.
return this connection to the pool
managed by the database. Should be used
only if the connection was obtained by Database#checkout
.