iSimpleQuery Interface Contract
Rules are in
.claude/rules/isimplequery-contract.md— this skill provides the interface definition and usage reference.
Interface Definition (SimpleInterface.pas)
iSimpleQuery = interface
['{6DCCA942-736D-4C66-AC9B-94151F14853A}']
function SQL: TStrings;
function Params: TParams;
function ExecSQL: iSimpleQuery;
function DataSet: TDataSet;
function Open(aSQL: String): iSimpleQuery; overload;
function Open: iSimpleQuery; overload;
function StartTransaction: iSimpleQuery;
function Commit: iSimpleQuery;
function Rollback: iSimpleQuery;
function &EndTransaction: iSimpleQuery;
function InTransaction: Boolean;
function SQLType: TSQLType;
end;
Method-by-Method Reference
| Method | Returns | Purpose |
|---|---|---|
SQL |
TStrings | Writable SQL text (DAO writes before Open/ExecSQL) |
Params |
TParams | Query parameters (DAO writes before Open/ExecSQL) |
ExecSQL |
Self | Executes INSERT/UPDATE/DELETE |
DataSet |
TDataSet | Query result after Open |
Open(aSQL) |
Self | Sets SQL and opens in one call |
Open |
Self | Opens with SQL already set |
StartTransaction |
Self | Begins transaction (check InTransaction first) |
Commit |
Self | Commits active transaction |
Rollback |
Self | Rolls back active transaction |
&EndTransaction |
Self | Delegates to Commit |
InTransaction |
Boolean | True if transaction is active |
SQLType |
TSQLType | Database type (Firebird, MySQL, SQLite, Oracle) |
Constructor Pattern
constructor Create(aConnection: TXxxConnection; aSQLType: TSQLType = TSQLType.Firebird);
class function New(aConnection: TXxxConnection; aSQLType: TSQLType = TSQLType.Firebird): iSimpleQuery;
Existing Drivers
| Driver | Connection Type | File |
|---|---|---|
| FireDAC | TFDConnection |
SimpleQueryFiredac.pas |
| UniDAC | TUniConnection |
SimpleQueryUnidac.pas |
| Zeos | TZConnection |
SimpleQueryZeos.pas |
| RestDW | TRESTDWClientSQL |
SimpleQueryRestDW.pas |
| Horse (REST) | HTTP URL string | SimpleQueryHorse.pas |
How TSimpleDAO Uses iSimpleQuery
- DAO writes SQL to
query.SQL - DAO writes params to
query.Params - For SELECT: calls
query.Openthen readsquery.DataSet - For INSERT/UPDATE/DELETE: calls
query.ExecSQL - Batch operations:
query.StartTransaction→ operations →query.Commit(or Rollback on error)