A Connection represent a connection to a SQL database system.
Use a Connection to execute SQL statements. There are three ways to execute statements: Connection_execute() is used to execute SQL statements that does not return a result set. Such statements are INSERT, UPDATE or DELETE. Connection_executeQuery() is used to execute a SQL SELECT statement and return a result set. These methods can only handle values which can be expressed as C-strings. If you need to handle binary data, such as inserting a blob value into the database, use a PreparedStatement object to execute the SQL statement. The factory method Connection_prepareStatement() is used to obtain a PreparedStatement object.
The method Connection_executeQuery() will return an empty ResultSet (not null) if the SQL statement did not return any values. A ResultSet lives until the next call to Connection execute or until the Connection is returned to the Connection Pool. If an error occur during execution, an SQLException is thrown.
Any SQL statement that changes the database (basically, any SQL command other than SELECT) will automatically start a transaction if one is not already in effect. Automatically started transactions are committed at the conclusion of the command.
Transactions can also be started manually using Connection_beginTransaction(). Such transactions usually persist until the next call to Connection_commit() or Connection_rollback(). A transaction will also rollback if the database is closed or if an error occurs. Nested transactions are not allowed.
A Connection is reentrant, but not thread-safe and should only be used by one thread (at the time).
Macros | |
#define | T Connection_T |
Typedefs | |
typedef struct Connection_S * | T |
Functions | |
int | Connection_ping (T C) |
Ping the database server and returns true if this Connection is alive, otherwise false in which case the Connection should be closed. More... | |
void | Connection_clear (T C) |
Close any ResultSet and PreparedStatements in the Connection. More... | |
void | Connection_close (T C) |
Return connection to the connection pool. More... | |
void | Connection_beginTransaction (T C) |
Start a transaction. More... | |
void | Connection_commit (T C) |
Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by this Connection object. More... | |
void | Connection_rollback (T C) |
Undoes all changes made in the current transaction and releases any database locks currently held by this Connection object. More... | |
long long | Connection_lastRowId (T C) |
Returns the value for the most recent INSERT statement into a table with an AUTO_INCREMENT or INTEGER PRIMARY KEY column. More... | |
long long | Connection_rowsChanged (T C) |
Returns the number of rows that was inserted, deleted or modified by the last Connection_execute() statement. More... | |
void | Connection_execute (T C, const char *sql,...) |
Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement. More... | |
ResultSet_T | Connection_executeQuery (T C, const char *sql,...) |
Executes the given SQL statement, which returns a single ResultSet object. More... | |
PreparedStatement_T | Connection_prepareStatement (T C, const char *sql,...) |
Creates a PreparedStatement object for sending parameterized SQL statements to the database. More... | |
const char * | Connection_getLastError (T C) |
This method can be used to obtain a string describing the last error that occurred. More... | |
Properties | |
void | Connection_setQueryTimeout (T C, int ms) |
Sets the number of milliseconds the Connection should wait for a SQL statement to finish if the database is busy. More... | |
int | Connection_getQueryTimeout (T C) |
Retrieves the number of milliseconds the Connection will wait for a SQL statement object to execute. More... | |
void | Connection_setMaxRows (T C, int max) |
Sets the limit for the maximum number of rows that any ResultSet object can contain. More... | |
int | Connection_getMaxRows (T C) |
Retrieves the maximum number of rows that a ResultSet object produced by this Connection object can contain. More... | |
URL_T | Connection_getURL (T C) |
Returns this Connection URL. More... | |
Class methods | |
int | Connection_isSupported (const char *url) |
Class method, test if the specified database system is supported by this library. More... | |
#define T Connection_T |
typedef struct Connection_S* T |
void Connection_setQueryTimeout | ( | T | C, |
int | ms | ||
) |
Sets the number of milliseconds the Connection should wait for a SQL statement to finish if the database is busy.
If the limit is exceeded, then the execute
methods will return immediately with an error. The default timeout is 3 seconds
.
C | A Connection object |
ms | The query timeout limit in milliseconds; zero means there is no limit |
int Connection_getQueryTimeout | ( | T | C | ) |
Retrieves the number of milliseconds the Connection will wait for a SQL statement object to execute.
C | A Connection object |
void Connection_setMaxRows | ( | T | C, |
int | max | ||
) |
Sets the limit for the maximum number of rows that any ResultSet object can contain.
If the limit is exceeded, the excess rows are silently dropped.
C | A Connection object |
max | The new max rows limit; 0 means there is no limit |
int Connection_getMaxRows | ( | T | C | ) |
Retrieves the maximum number of rows that a ResultSet object produced by this Connection object can contain.
If this limit is exceeded, the excess rows are silently dropped.
C | A Connection object |
URL_T Connection_getURL | ( | T | C | ) |
Returns this Connection URL.
C | A Connection object |
int Connection_ping | ( | T | C | ) |
Ping the database server and returns true if this Connection is alive, otherwise false in which case the Connection should be closed.
C | A Connection object |
void Connection_clear | ( | T | C | ) |
Close any ResultSet and PreparedStatements in the Connection.
Normally it is not necessary to call this method, but for some implementation (SQLite) it may, in some situations, be necessary to call this method if a execution sequence error occurs.
C | A Connection object |
void Connection_close | ( | T | C | ) |
Return connection to the connection pool.
The same as calling ConnectionPool_returnConnection() on a connection.
C | A Connection object |
void Connection_beginTransaction | ( | T | C | ) |
Start a transaction.
C | A Connection object |
SQLException | If a database error occurs |
void Connection_commit | ( | T | C | ) |
Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by this Connection object.
C | A Connection object |
SQLException | If a database error occurs |
void Connection_rollback | ( | T | C | ) |
Undoes all changes made in the current transaction and releases any database locks currently held by this Connection object.
This method will first call Connection_clear() before performing the rollback to clear any statements in progress such as selects.
C | A Connection object |
SQLException | If a database error occurs |
long long Connection_lastRowId | ( | T | C | ) |
Returns the value for the most recent INSERT statement into a table with an AUTO_INCREMENT or INTEGER PRIMARY KEY column.
C | A Connection object |
long long Connection_rowsChanged | ( | T | C | ) |
Returns the number of rows that was inserted, deleted or modified by the last Connection_execute() statement.
If used with a transaction, this method should be called before commit is executed, otherwise 0 is returned.
C | A Connection object |
void Connection_execute | ( | T | C, |
const char * | sql, | ||
... | |||
) |
Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
Several SQL statements can be used in the sql parameter string, each separated with the ; SQL statement separator character. Note, calling this method clears any previous ResultSets associated with the Connection.
C | A Connection object |
sql | A SQL statement |
SQLException | If a database error occurs. |
ResultSet_T Connection_executeQuery | ( | T | C, |
const char * | sql, | ||
... | |||
) |
Executes the given SQL statement, which returns a single ResultSet object.
You may only use one SQL statement with this method. This is different from the behavior of Connection_execute() which executes all SQL statements in its input string. If the sql parameter string contains more than one SQL statement, only the first statement is executed, the others are silently ignored. A ResultSet "lives" only until the next call to Connection_executeQuery(), Connection_execute() or until the Connection is returned to the Connection Pool. This means that Result Sets cannot be saved between queries.
C | A Connection object |
sql | A SQL statement |
SQLException | If a database error occurs. |
PreparedStatement_T Connection_prepareStatement | ( | T | C, |
const char * | sql, | ||
... | |||
) |
Creates a PreparedStatement object for sending parameterized SQL statements to the database.
The sql
parameter may contain IN parameter placeholders. An IN placeholder is specified with a '?' character in the sql string. The placeholders are then replaced with actual values by using the PreparedStatement's setXXX methods. Only one SQL statement may be used in the sql parameter, this in difference to Connection_execute() which may take several statements. A PreparedStatement "lives" until the Connection is returned to the Connection Pool.
C | A Connection object |
sql | A single SQL statement that may contain one or more '?' IN parameter placeholders |
SQLException | If a database error occurs. |
const char* Connection_getLastError | ( | T | C | ) |
This method can be used to obtain a string describing the last error that occurred.
Inside a CATCH-block you can also find the error message directly in the variable Exception_frame.message. It is recommended to use this variable instead since it contains both SQL errors and API errors such as parameter index out of range etc, while Connection_getLastError() might only show SQL errors
C | A Connection object |
int Connection_isSupported | ( | const char * | url | ) |
Class method, test if the specified database system is supported by this library.
Clients may pass a full Connection URL, for example using URL_toString(), or for convenience only the protocol part of the URL. E.g. "mysql" or "sqlite".
url | A database url string |
Copyright © Tildeslash Ltd. All rights reserved.