vexecuteQuery

Execute an SQL select statement with a va_list argument containing a list of parameters or an array of Value parameters.

For an overview see page McoSqlEngine

Prototypes

 
    ResultSet* SqlEngine::vexecuteQuery(char const* sql, va_list* list);
     
    ResultSet* SqlEngine::vexecuteQuery(char const* sql, Value** params);
     
    ResultSet* SqlEngine::vexecuteQuery(char const* sql, Value** params, size_t nParams);
     
    ResultSet* SqlEngine::vexecuteQuery(Transaction* trans, char const* sql, va_list* list);
     
    ResultSet* SqlEngine::vexecuteQuery(Transaction* trans, char const* sql, Value** params);
     
    ResultSet* SqlEngine::vexecuteQuery(Transaction* trans, char const* sql, Value** params, size_t nParams);
 

Arguments

trans A Transaction instance. When passed, no implicit database transaction is started or committed. When absent, the SQL select statement is executed within an implicit database transaction.
sql A string containing an SQL select statement with possible parameters to be substituted from the variable list
list A va_list argument containing a list of parameters to be substituted into the sql string
params A pointer to one or an array of Value parameters
nParams An integer value specifying the number of Value objects in array params, or -1 if the number is unknown

Description

These methods execute an SQL select statement with a variable list of parameters. (See page Parameter Substitution Format Specifiers). It returns a QueryResult containing the set of table rows that satisfy the query. The first three versions of vexecuteQuery() start an implicit read-only database transaction and roll back the transaction when finished. When the second group of three versions of vexecuteQuery(), (with the trans parameter) are called, the query is executed within the context of this Transaction; the calling application code is responsible for starting and committing or rolling back the Transaction.

Returns

These methods return a QueryResult or throw a RuntimeException in the case of an error.

Example

     
    const char * dbname = "SqlDb";
     
    int main(int argc, char* argv[])
    {
        McoSqlEngine engine;
        ...
        engine.open(db_name,  // database name
                SqlDb_get_dictionary(),  // database dictionary
                DATABASE_SIZE,  // database size
                MEMORY_PAGE_SIZE,  // page size
                MAP_ADDRESS); // mapping address for shared memory mode
        ...
        Query(trans, "select * from Person where name like %s", "Thomas");
        ...
    }
     
    void Query(Transaction* trans, const char * sql, ...)
    {
        va_list list;
         
        va_start(list, sql);
        QueryResult result(engine.vexecuteQuery(trans, sql, list));
        va_end(list);
        ...
    }