With this class applications can handle all DDL and DML commands without parameter markers. Parameter markers are the '?' or ':<name>' tags. Use SQLDBC_Connection::createStatement from the connection object to get a new SQLDBC_Statement object.
Use the execute() member function to execute the SQL statement.
The SQL statement may contain ASCII or UCS2 characters and must not be zero-terminated. The execute() member function converts it automatically to the correct code set according to the encoding of the database. In this way it is possible to write portable code for UNICODE and non-UNICODE databases. To increase performance, applications should use UCS2 statements only for UNICODE databases.
SQLDBC_Statement *stmt = conn->createStatement(); SQLDBC_Retcode rc = stmt->execute("SELECT * FROM DUAL"); if (rc != SQLDBC_OK) { Handle error ... }
After execution, the application must check the return code of the command. If an SQL error occurred the error() member function returns error details.
if (stmt->isQuery()) { SQLDBC_ResultSet *result = stmt->getResultSet(); Retrieving result ... }
The getResultSet() member function returns a reference to an SQLDBC_ResultSet object. Applications can use SQLDBC_ResultSet for retrieving data from the result set of the query statement or to navigate within result sets. An opened result set is automatically closed by reusing the execute() member function or by closing the object with an SQLDBC_Connection::releaseStatement().
For non-query SQL statements the application can check the number of modified rows with the getRowsAffected() member function.
Definition at line 1638 of file SQLDBC.h.
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::execute | ( | const char * | sql, | |
const SQLDBC_Length | sqlLength, | |||
const SQLDBC_StringEncoding | encoding | |||
) |
Executes an UNICODE/ASCII coded SQL statement.
The SQL statement is executed immediately on sending a DBS request to the database. In case of an error, the SQLDBC_ErrorHndl object (to be queried using error()) of this object is set. If the executed SQL statement is a query, a result set is created. The application can check this using isQuery(), and obtain retrieve the ResultSet using getResultSet().
sql | The SQL statement to be executed. The coding of this string argument depends from the encoding argument. | |
sqlLength | The length in bytes of the of the SQL statement | |
encoding | The character coding of the SQL statement |
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::execute | ( | const char * | sql, | |
const SQLDBC_StringEncoding | encoding | |||
) |
Executes an UNICODE/ASCII coded zero-terminated SQL statement.
The SQL statement is executed immediately on sending a DBS request to the database. In case of an error, the SQLDBC_ErrorHndl object (to be queried using error()) of this object is set. If the executed SQL statement is a query, a result set is created. The application can check this using isQuery(), and obtain retrieve the resultset using getResultSet().
sql | The zero-terminated SQL statement to be executed. The coding of this string argument depends from the encoding argument. | |
encoding | The character coding of the SQL statement. |
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::execute | ( | const char * | sql | ) |
Executes an ASCII coded zero-terminated SQL statement.
The SQL statement is executed immediately on sending a DBS request to the database. In case of an error, the SQLDBC_ErrorHndl object (to be queried using error()) of this object is set. If the executed SQL statement is a query, a result set is created. The application can check this using isQuery(), and obtain retrieve the resultset using getResultSet().
sql | The zero-terminated ASCII coded SQL statement to be execute. |
void SQLDBC::SQLDBC_Statement::setResultSetFetchSize | ( | SQLDBC_Int2 | rows | ) |
Sets the maximum number of be rows that can be fetched at once.
Sets the maximum number of rows to be fetched from a result set. Use this to manipulate the number of rows in the order interface. Use a value > 0 to set the maximum number of rows. Use a value <= 0 to reset this limit to the default value. The default value is 'unlimited' (32767). Setting this value does not affect an already executed SQL statement.
rows | [in] Number of Rows to be fetched. |
void SQLDBC::SQLDBC_Statement::setMaxRows | ( | SQLDBC_UInt4 | rows | ) |
Limits the number of rows of an SQLDBC_ResultSet object.
The number of rows of the result set is truncated if the result of a query statement is larger than this limit. The default setting is 'unlimited' (0). Setting this limit does not affect an already executed SQL statement.
rows | [in] Maximum number of rows of a result set |
const SQLDBC_UInt4 SQLDBC::SQLDBC_Statement::getMaxRows | ( | ) | const |
Returns the maximum number of rows allowed in a result set.
This value may be set with setMaxRows before the execution of an SQL statement.
SQLDBC_ResultSet* SQLDBC::SQLDBC_Statement::getResultSet | ( | ) |
Retrieves a reference to the SQLDBC_ResultSet object.
void SQLDBC::SQLDBC_Statement::setCursorName | ( | const char * | buffer, | |
SQLDBC_Length | bufferLength, | |||
const SQLDBC_StringEncoding | encoding | |||
) |
Sets the cursor name.
Setting the cursorname affects only query and database procedure commands. For DDL-, INSERT-, UPDATE- and DELETE- commands setting the cursorname has no effect.
buffer | The new cursor name. | |
bufferLength | Length in bytes of the buffer. In case a zero-terminated string passed on in the buffer argument, you can set the bufferLength to SQLDBC_NTS. | |
encoding | Encoding of the cursor name. |
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::setCommandInfo | ( | const char * | buffer, | |
SQLDBC_Length | bufferLength, | |||
SQLDBC_Int4 | lineNumber | |||
) |
Sets the command info.
Sets the command info and a line number (for example name of programm and current line number). This will be send to the database kernel as part of a parse order. If the kernel runs in a special diagnose mode these information will be stored in a system table and can be used to profile your application. The column info and line number will be unset after the next execute of a SQL command at this statement handle.
buffer | The command info. | |
bufferLength | Length in bytes of the buffer. In case a zero-terminated string passed on in the buffer argument, you can set the bufferLength to SQLDBC_NTS. Set bufferLength to SQLDBC_NULL_DATA if you want to unset the command info and line number. | |
lineNumber | The line number. |
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::getCursorName | ( | char * | buffer, | |
const SQLDBC_StringEncoding | encoding, | |||
const SQLDBC_Length | bufferSize, | |||
SQLDBC_Length * | bufferLength | |||
) | const |
Retrieves the cursor name.
The cursor name may be set by:
buffer | The buffer into which the zero-terminated cursor name is copied. | |
encoding | Encoding of the buffer where the cursor name is stored. | |
bufferSize | Maximum size of the buffer in bytes. | |
bufferLength | [out] Number of bytes copied to the buffer, except the number of bytes necessary for the zero-terminator. If the source string exceeds the bufferSize. SQLDBC_DATA_TRUNC will be returned and the bufferLength set to the number of bytes (except terminator bytes) needed to copy without truncation. |
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::getTableName | ( | char * | buffer, | |
const SQLDBC_StringEncoding | encoding, | |||
const SQLDBC_Length | bufferSize, | |||
SQLDBC_Length * | bufferLength | |||
) | const |
Retrieves the table name (for SELECT FOR UPDATE commands).
buffer | The buffer in which into the table name is copied. | |
encoding | Encoding of the buffer where the table name is stored. | |
bufferSize | Size (in bytes) of the buffer | |
bufferLength | [out] Number of bytes copied to the buffer, except the number of bytes necessary for the zero-terminator. If the source string exceeds the bufferSize value SQLDBC_DATA_TRUNC will be returned and the bufferLength set to the number of bytes (except the terminator bytes) needed to copy the table name without truncation. |
SQLDBC_Bool SQLDBC::SQLDBC_Statement::isQuery | ( | ) | const |
Checks if the SQL statement is a query.
A statement is a query only if it returns a result set. This can be determined only after execution of the statement object.
const SQLDBC_Int4 SQLDBC::SQLDBC_Statement::getRowsAffected | ( | ) | const |
Returns the number of rows affected by the executed SQL statement.
This method returns a non-zero value if more than one row was addressed by the SQL statement. If the return value is lower than zero, more than one rows was addressed but the exact number of addressed rows cannot be determined.
void SQLDBC::SQLDBC_Statement::setResultSetType | ( | ResultSetType | type | ) |
Sets the type of a result set.
A result set is only created by a query command.
There are three kind of result sets:
type | [in] The result set type. Possible values are: FORWARD_ONLY, SCROLL_SENSITIVE, SCROLL_INSENSITIVE (default) |
const ResultSetType SQLDBC::SQLDBC_Statement::getResultSetType | ( | ) | const |
Returns the type of a result set.
If the requested result set type isn't allowed for this SQL statement, the SQLDBC changes it to an allowed one. Check this with getResultSetType() if the execute() member function returns with a warning.
void SQLDBC::SQLDBC_Statement::setResultSetConcurrencyType | ( | ConcurrencyType | type | ) |
Sets the type of the result set concurrency There are two kinds of concurrency:
type | [in] The result set type. Possible values are: CONCUR_READ_ONLY (default) CONCUR_UPDATABLE |
const ConcurrencyType SQLDBC::SQLDBC_Statement::getResultSetConcurrencyType | ( | ) | const |
Retrieves the type of the result set concurrency There are two kinds of concurrency:
const SQLDBC_Int4* SQLDBC::SQLDBC_Statement::getRowStatus | ( | ) | const |
Returns the row status array.
The row status array describes the state of each row. The size of the row status array is increased by each addBatch() function call.
const SQLDBC_UInt4 SQLDBC::SQLDBC_Statement::getBatchSize | ( | ) | const |
Returns the size of the row status array.
const SQLDBC_Retcode SQLDBC::SQLDBC_Statement::addBatch | ( | const char * | sql, | |
SQLDBC_Length | sqlLength, | |||
SQLDBC_StringEncoding | encoding | |||
) |
Adds a statement to the batch.
Statements for batched execution must not return result sets.
sql | The statement to be added | |
sqlLength | Length in Bytes of the statement | |
encoding | Encoding of the statement |
const SQLDBC_Retcode SQLDBC::SQLDBC_Statement::addBatch | ( | const char * | sql, | |
SQLDBC_StringEncoding | encoding | |||
) |
Adds a statement to the batch.
The must be end with a zero-terminator.
sql | The statement to be added | |
encoding | Encoding of the statement |
const SQLDBC_Retcode SQLDBC::SQLDBC_Statement::addBatch | ( | const char * | sql | ) |
Adds a statement to the batch.
The must be end with a zero-terminator and in ASCII code.
sql | The statement to be added |
const SQLDBC_Retcode SQLDBC::SQLDBC_Statement::executeBatch | ( | ) |
Executes the statements previously input via addBatch().
void SQLDBC::SQLDBC_Statement::clearBatch | ( | ) |
Clears the array of batched statements.
SQLDBC_Retcode SQLDBC::SQLDBC_Statement::getLastInsertedKey | ( | SQLDBC_Int4 | tag, | |
SQLDBC_HostType | type, | |||
void * | paramAddr, | |||
SQLDBC_Length * | lengthIndicator, | |||
SQLDBC_Length | size, | |||
SQLDBC_Bool | terminate = SQLDBC_TRUE | |||
) |
Retrieves the key that was inserted by the last insert operation.
tag | The tag that describes whether to get the last or the first serial key. One of SQLDBC_FIRST_INSERTED_SERIAL , SQLDBC_LAST_INSERTED_SERIAL . | |
type | The output host type. | |
paramAddr | The parameter address. | |
lengthIndicator | The length or indicator value. | |
size | The size of the output parameter, in bytes. | |
terminate | Whether output strings are terminated. Default is SQLDBC_TRUE . |
SQLDBC_OK
, if the value is returned, SQLDBC_NOT_OK
if an error is set, SQLDBC_NO_DATA_FOUND
if the statement didn't inserted any key, or didn't report them to the interface. void SQLDBC::SQLDBC_Statement::clearResultSet | ( | ) | [protected] |
SQLDBC_ErrorHndl& SQLDBC::SQLDBC_ConnectionItem::error | ( | ) | [inherited] |
Returns a reference to the ErrorHndl object.
void SQLDBC::SQLDBC_ConnectionItem::clearError | ( | ) | [inherited] |
Deletes the error has been stored.
SQLDBC_SQLWarning* SQLDBC::SQLDBC_ConnectionItem::warning | ( | ) | [inherited] |
Returns a reference to an SQLWarning object stored in the SQLDBC_ConnectionItem object.
void SQLDBC::SQLDBC_ConnectionItem::clearWarnings | ( | ) | [inherited] |
Deletes the warning stored in the SQLWarning object.