Base interface for all objects that behave like a connection. This trait will
usually be implemented by the objects that connect to a database, either over
the filesystem or sockets. [[Connection]] are not supposed to be
thread-safe and clients should assume implementations are not thread safe
and shouldn't try to perform more than one statement (either common or
prepared) at the same time. They should wait for the previous statement to be
executed to then be able to pick the next one.
You can, for instance, compose on top of the futures returned by this class
to execute many statements at the same time:
Connects this object to the database. Connection objects are not
necessarily created with a connection to the database so you might have to
call this method to be able to run queries against it.
Connects this object to the database. Connection objects are not
necessarily created with a connection to the database so you might have to
call this method to be able to run queries against it.
Sends a prepared statement to the database. Prepared statements are special
statements that are pre-compiled by the database to run faster, they also
allow you to avoid SQL injection attacks by not having to concatenate
strings from possibly unsafe sources (like users) and sending them directy
to the database.
Sends a prepared statement to the database. Prepared statements are special
statements that are pre-compiled by the database to run faster, they also
allow you to avoid SQL injection attacks by not having to concatenate
strings from possibly unsafe sources (like users) and sending them directy
to the database.
When sending a prepared statement, you can insert ? signs in your statement
and then provide values at the method call 'values' parameter, as in:
connection.sendPreparedStatement( "SELECT * FROM users WHERE users.login = ?", Array( "john-doe" ) )
As you are using the ? as the placeholder for the value, you don't have to
perform any kind of manipulation to the value, just provide it as is and
the database will clean it up. You must provide as many parameters as you
have provided placeholders, so, if your query is as "INSERT INTO users
(login,email) VALUES (?,?)" you have to provide an array with at least two
values, as in:
Sends a statement to the database. The statement can be anything your
database can execute. Not all statements will return a collection of rows,
so check the returned object if there are rows available.
Sends a statement to the database. The statement can be anything your
database can execute. Not all statements will return a collection of rows,
so check the returned object if there are rows available.
Executes an (asynchronous) function within a transaction block. If the
function completes successfully, the transaction is committed, otherwise it
is aborted.
Executes an (asynchronous) function within a transaction block. If the
function completes successfully, the transaction is committed, otherwise it
is aborted.
Attributes
f
operation to execute on this connection
Returns:
result of f, conditional on transaction operations succeeding