Difference between revisions of "SQLQueryEx"
From SCAR Divi Manual
(One intermediate revision by the same user not shown) | |||
Line 8: | Line 8: | ||
==Description== | ==Description== | ||
− | Creates a new [ | + | Creates a new [[SQLite3]] query statement '''Query''' for the database given by '''DBIndex'''. The function returns an index to the query statement in the system. To execute the query, you have to call [[SQLQueryStep]], it may be required to bind parameters to the query first. You can add parameters with the "?" sign, then fill them out later using SQLBindX methods, the parameters are offset at index 1 rather than 0. An example would be "SELECT * FROM table WHERE id = ?", you would then use [[SQLBindInt]] to fill out the [[integer]] id parameter at index 1. After you've executed the query, you can bind new parameters and execute it again by calling [[SQLQueryReset]] first. |
==Example== | ==Example== | ||
Line 58: | Line 58: | ||
[[Category:Functions]] | [[Category:Functions]] | ||
− | [[Category:Database Functions | + | [[Category:Database Functions]] |
Latest revision as of 09:59, 10 February 2012
Definition
function SQLQueryEx(const DBIndex: Integer; const Query: string): Integer;
Availability
SCAR Divi 3.31 > Current
Description
Creates a new SQLite3 query statement Query for the database given by DBIndex. The function returns an index to the query statement in the system. To execute the query, you have to call SQLQueryStep, it may be required to bind parameters to the query first. You can add parameters with the "?" sign, then fill them out later using SQLBindX methods, the parameters are offset at index 1 rather than 0. An example would be "SELECT * FROM table WHERE id = ?", you would then use SQLBindInt to fill out the integer id parameter at index 1. After you've executed the query, you can bind new parameters and execute it again by calling SQLQueryReset first.
Example
var DB, Query, InsertID: Integer; begin DB := SQLOpen(WorkspacePath + 'test.db3', True); try // Create a table SQLQuery(DB, 'CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY, string TEXT)'); // Insert 2 rows into the table Query := SQLQueryEx(DB, 'INSERT INTO test VALUES(NULL, ?)'); try SQLBindStr(Query, 1, 'Hello Mars!'); SQLQueryStep(Query); SQLQueryReset(Query); SQLBindStr(Query, 1, 'Hello World!'); SQLQueryStep(Query); InsertID := SQLLastID(DB); finally SQLQueryFree(Query); end; // Get the data stored in the last row Query := SQLQueryEx(DB, 'SELECT * FROM test WHERE id = ?'); try SQLBindInt(Query, 1, InsertID); if SQLQueryStep(Query) = SQL_ROW then WriteLn(SQLColumnStr(Query, 1)); finally SQLQueryFree(Query); end; finally SQLFree(DB); end; end.
Output:
Hello World!