
//######################################################
//#INTERFACE POUR UTILISATION DES FONCTIONS SQLITE3.DLL#
//######################################################

//Version Interface : 1.0
//Version DLL : 3.6.7

unit sqlite3dll;

interface

uses
//PWChar
Windows,
//StrToInt
SysUtils; 

//==========
//CONSTANTES
//==========

const                                      //RESULT CODES
// Return values for sqlite3_exec() and sqlite3_step()
SQLITE_OK=0;                               //Successful result */
SQLITE_ERROR=1;                            //SQL error or missing database */
SQLITE_INTERNAL=2;                         //Internal logic error in SQLite */
SQLITE_PERM=3;                             //Access permission denied */
SQLITE_ABORT=4;                            //Callback routine requested an abort */
SQLITE_BUSY=5;                             //The database file is locked */
SQLITE_LOCKED=6;                           //A table in the database is locked */
SQLITE_NOMEM=7;                            //A malloc() failed */
SQLITE_READONLY=8;                         //Attempt to write a readonly database */
SQLITE_INTERRUPT=9;                        //Operation terminated by sqlite3_interrupt()*/
SQLITE_IOERR=10;                           //Some kind of disk I/O error occurred */
SQLITE_CORRUPT=11;                         //The database disk image is malformed */
//SQLITE_NOTFOUND=12;                        //NOT USED. Table or record not found */
SQLITE_FULL=13;                            //Insertion failed because database is full */
SQLITE_CANTOPEN=14;                        //Unable to open the database file */
//SQLITE_PROTOCOL=15;                        //NOT USED. Database lock protocol error */
SQLITE_EMPTY=16;                           //Database is empty */
SQLITE_SCHEMA=17;                          //The database schema changed */
SQLITE_TOOBIG=18;                          //String or BLOB exceeds size limit */
SQLITE_CONSTRAINT=19;                      //Abort due to constraint violation */
SQLITE_MISMATCH=20;                        //Data type mismatch */
SQLITE_MISUSE=21;                          //Library used incorrectly */
SQLITE_NOLFS=22;                           //Uses OS features not supported on host */
SQLITE_AUTH=23;                            //Authorization denied */
SQLITE_FORMAT=24;                          //Auxiliary database format error */
SQLITE_RANGE=25;                           //2nd parameter to sqlite3_bind out of range */
SQLITE_NOTADB=26;                          //File opened that is not a database file */
SQLITE_ROW=100;                            //sqlite3_step() has another row ready */
SQLITE_DONE=101;                           //sqlite3_step() has finished executing */

const                                      //FLAGS FOR THE XACCESS VFS METHOD (third parameter to the xAccess method of an sqlite3_vfs object)

SQLITE_ACCESS_EXISTS=0;
SQLITE_ACCESS_READWRITE=1;
SQLITE_ACCESS_READ=2;

const                                      //AUTHORIZER ACTION CODES

SQLITE_CREATE_INDE=1;                      //Index Name      Table Name      */
SQLITE_CREATE_TABLE=2;                     //Table Name      NULL            */
SQLITE_CREATE_TEMP_INDEX=3;                //Index Name      Table Name      */
SQLITE_CREATE_TEMP_TABLE=4;                //Table Name      NULL            */
SQLITE_CREATE_TEMP_TRIGGER=5;              //Trigger Name    Table Name      */
SQLITE_CREATE_TEMP_VIEW=6;                 //View Name       NULL            */
SQLITE_CREATE_TRIGGER=7;                   //Trigger Name    Table Name      */
SQLITE_CREATE_VIEW=8;                      //View Name       NULL            */
SQLITE_DELETE=9;                           //Table Name      NULL            */
SQLITE_DROP_INDEX=10;                      //Index Name      Table Name      */
SQLITE_DROP_TABLE=11;                      //Table Name      NULL            */
SQLITE_DROP_TEMP_INDEX=12;                 //Index Name      Table Name      */
SQLITE_DROP_TEMP_TABLE=13;                 //Table Name      NULL            */
SQLITE_DROP_TEMP_TRIGGER=14;               //Trigger Name    Table Name      */
SQLITE_DROP_TEMP_VIEW=15;                  //View Name       NULL            */
SQLITE_DROP_TRIGGER=16;                    //Trigger Name    Table Name      */
SQLITE_DROP_VIEW=17;                       //View Name       NULL            */
SQLITE_INSERT=18;                          //Table Name      NULL            */
SQLITE_PRAGMA=19;                          //Pragma Name     1st arg or NULL */
SQLITE_READ=20;                            //Table Name      Column Name     */
SQLITE_SELECT=21;                          //NULL            NULL            */
SQLITE_TRANSACTION=22;                     //NULL            NULL            */
SQLITE_UPDATE=23;                          //Table Name      Column Name     */
SQLITE_ATTACH=24;                          //Filename        NULL            */
SQLITE_DETACH=25;                          //Database Name   NULL            */
SQLITE_ALTER_TABLE=26;                     //Database Name   Table Name      */
SQLITE_REINDEX=27;                         //Index Name      NULL            */
SQLITE_ANALYZE=28;                         //Table Name      NULL            */
SQLITE_CREATE_VTABLE=29;                   //Table Name      Module Name     */
SQLITE_DROP_VTABLE=30;                     //Table Name      Module Name     */
SQLITE_FUNCTION=31;                        //NULL            Function Name   */
//SQLITE_COPY=0;                             //No longer used */

const                                      //FUNDAMENTAL DATATYPES
//values returned by SQLite3_Column_Type
SQLITE_INTEGER=1;
SQLITE_FLOAT=2;
SQLITE_TEXT=3;
SQLITE_BLOB=4;
SQLITE_NULL=5;

const                                      //CONFIGURATION OPTIONS

SQLITE_CONFIG_SINGLETHREAD=1;              //nil */
SQLITE_CONFIG_MULTITHREAD=2;               //nil */
SQLITE_CONFIG_SERIALIZED=3;                //nil */
SQLITE_CONFIG_MALLOC=4;                    //sqlite3_mem_methods* */
SQLITE_CONFIG_GETMALLOC=5;                 //sqlite3_mem_methods* */
SQLITE_CONFIG_SCRATCH=6;                   //void*, int sz, int N */
SQLITE_CONFIG_PAGECACHE=7;                 //void*, int sz, int N */
SQLITE_CONFIG_HEAP=8;                      //void*, int nByte, int min */
SQLITE_CONFIG_MEMSTATUS=9;                 //boolean */
SQLITE_CONFIG_MUTEX=10;                    //sqlite3_mutex_methods* */
SQLITE_CONFIG_GETMUTEX=11;                 //sqlite3_mutex_methods* */
//SQLITE_CONFIG_CHUNKALLOC=12;               //now unused. */
SQLITE_CONFIG_LOOKASIDE=13;                //int int */
SQLITE_CONFIG_PCACHE=14;                   //sqlite3_pcache_methods* */
SQLITE_CONFIG_GETPCACHE=15;                //sqlite3_pcache_methods* */

const                                      //AUTHORIZER RETURN CODES

SQLITE_DENY=1;                             //Abort the SQL statement with an error */
SQLITE_IGNORE=2;                           //Don't allow access, but don't generate an error */

const                                      //STANDARD FILE CONTROL OPCODES

SQLITE_FCNTL_LOCKSTATE=1;
SQLITE_GET_LOCKPROXYFILE=2;
SQLITE_SET_LOCKPROXYFILE=3;
SQLITE_LAST_ERRNO=4;

const                                      //DEVICE CHARACTERISTICS
SQLITE_IOCAP_ATOMIC:LongWord=1;
SQLITE_IOCAP_ATOMIC512:LongWord=2;
SQLITE_IOCAP_ATOMIC1K:LongWord=4;
SQLITE_IOCAP_ATOMIC2K:LongWord=8;
SQLITE_IOCAP_ATOMIC4K:LongWord=10;
SQLITE_IOCAP_ATOMIC8K:LongWord=20;
SQLITE_IOCAP_ATOMIC16K:LongWord=40;
SQLITE_IOCAP_ATOMIC32K:LongWord=80;
SQLITE_IOCAP_ATOMIC64K:LongWord=100;
SQLITE_IOCAP_SAFE_APPEND:LongWord=200;
SQLITE_IOCAP_SEQUENTIAL:LongWord=400;

const                                      //RUN-TIME LIMIT CATEGORIES

SQLITE_LIMIT_LENGTH=0;
SQLITE_LIMIT_SQL_LENGTH=1;
SQLITE_LIMIT_COLUMN=2;
SQLITE_LIMIT_EXPR_DEPTH=3;
SQLITE_LIMIT_COMPOUND_SELECT=4;
SQLITE_LIMIT_VDBE_OP=5;
SQLITE_LIMIT_FUNCTION_ARG=6;
SQLITE_LIMIT_ATTACHED=7;
SQLITE_LIMIT_LIKE_PATTERN_LENGTH=8;
SQLITE_LIMIT_VARIABLE_NUMBER=9;

const                                      //FILE LOCKING LEVELS

SQLITE_LOCK_NONE=0;
SQLITE_LOCK_SHARED=1;
SQLITE_LOCK_RESERVED=2;
SQLITE_LOCK_PENDING=3;
SQLITE_LOCK_EXCLUSIVE=4;

const                                      //MUTEX TYPES

SQLITE_MUTEX_FAST=0;
SQLITE_MUTEX_RECURSIVE=1;
SQLITE_MUTEX_STATIC_MASTER=2;
SQLITE_MUTEX_STATIC_MEM=3;                 //sqlite3_malloc() */
SQLITE_MUTEX_STATIC_MEM2=4;                //sqlite3_release_memory() */
SQLITE_MUTEX_STATIC_PRNG=5;                //sqlite3_random() */
SQLITE_MUTEX_STATIC_LRU=6;                 //lru page list */
SQLITE_MUTEX_STATIC_LRU2=7;                //lru page list */

const                                      //FLAGS FOR FILE OPEN OPERATIONS
SQLITE_OPEN_READONLY:LongWord=1;
SQLITE_OPEN_READWRITE:LongWord=2;
SQLITE_OPEN_CREATE:LongWord=4;
SQLITE_OPEN_DELETEONCLOSE:LongWord=8;
SQLITE_OPEN_EXCLUSIVE:LongWord=10;
SQLITE_OPEN_MAIN_DB:LongWord=100;
SQLITE_OPEN_TEMP_DB:LongWord=200;
SQLITE_OPEN_TRANSIENT_DB:LongWord=400;
SQLITE_OPEN_MAIN_JOURNAL:LongWord=800;
SQLITE_OPEN_TEMP_JOURNAL:LongWord=1000;
SQLITE_OPEN_SUBJOURNAL:LongWord=2000;
SQLITE_OPEN_MASTER_JOURNAL:LongWord=4000;
SQLITE_OPEN_NOMUTEX:LongWord=8000;
SQLITE_OPEN_FULLMUTEX:LongWord=10000;

const                                      //CONSTANTS DEFINING SPECIAL DESTRUCTOR BEHAVIOR

SQLITE_STATIC=0;
SQLITE_TRANSIENT=-1;

const                                      //SYNCHRONIZATION TYPE FLAGS
SQLITE_SYNC_NORMAL:LongWord=2;
SQLITE_SYNC_FULL:LongWord=3;
SQLITE_SYNC_DATAONLY:LongWord=10;

const                                      //TESTING INTERFACE OPERATION CODES

SQLITE_TESTCTRL_PRNG_SAVE=5;
SQLITE_TESTCTRL_PRNG_RESTORE=6;
SQLITE_TESTCTRL_PRNG_RESET=7;
SQLITE_TESTCTRL_BITVEC_TEST=8;
SQLITE_TESTCTRL_FAULT_INSTALL=9;
SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS=10;

const                                      //TEXT ENCODINGS
{
These are the allowed values for the eTextRep argument to
sqlite3_create_collation and sqlite3_create_function.
}
SQLITE_UTF8=1;
SQLITE_UTF16LE=2;
SQLITE_UTF16BE=3;
SQLITE_UTF16=4;                            //Use native byte order
SQLITE_ANY=5;                              //sqlite3_create_function only
SQLITE_UTF16_ALIGNED=8;                    //sqlite3_create_collation only


//================
//FONCTIONS SQLITE
//================

//Obtain Aggregate Function Context
function sqlite3_aggregate_context(sqlite3_context: Pointer; nBytes: Integer): Pointer; cdecl; external 'sqlite3.dll';
//Automatically Load An Extensions
function sqlite3_auto_extension(xEntryPoint: Pointer): Integer; cdecl; external 'sqlite3.dll';
//Binding Values To Prepared Statements
function sqlite3_bind_blob(sqlite3_stmt: pointer; param: integer; blob: pointer; size: integer; freeproc: integer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_double(sqlite3_stmt: pointer; param: integer; value: double): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_int(sqlite3_stmt: pointer; param: integer; value: integer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_int64(stmt: pointer; param: integer; value: int64): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_null(sqlite3_stmt: pointer; param: integer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_text(sqlite3_stmt: pointer; param: integer; text: PChar; size: integer; freeproc: integer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_text16(sqlite3_stmt: pointer; param: integer; text: Pointer; size: integer; freeproc: pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_value(sqlite3_stmt: pointer; param: integer; sqlite3_value: pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_bind_zeroblob(sqlite3_stmt: pointer; param: integer; value: integer): integer; cdecl; external 'sqlite3.dll';
//Number Of SQL Parameters
function sqlite3_bind_parameter_count(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Index Of A Parameter With A Given Name
function sqlite3_bind_parameter_index(sqlite3_stmt: pointer;zName:PChar): integer; cdecl; external 'sqlite3.dll';
//Name Of A Host Parameter
function sqlite3_bind_parameter_name(sqlite3_stmt: pointer; param: integer): PChar; cdecl; external 'sqlite3.dll';
//BLOB
function sqlite3_blob_bytes(sqlite3_blob: pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_blob_close(sqlite3_blob: pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_blob_open(sqlite3: pointer;zDb,zTable,zColumn: PChar;iRow: int64;flags: integer;sqlite3_blob: Pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_blob_read(sqlite3_blob: pointer;z: pointer;n,iOffset: integer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_blob_write(sqlite3_blob: pointer;z: pointer;n,iOffset: integer): integer; cdecl; external 'sqlite3.dll';
//Register A Callback To Handle SQLITE_BUSY Errors
procedure sqlite3_busy_handler(sqlite3: Pointer; CallbackPtr: Pointer; UD:pointer); cdecl; external 'sqlite3.dll';
procedure sqlite3_busy_timeout(sqlite3: Pointer;TimeOut:integer); cdecl; external 'sqlite3.dll';
//Count The Number Of Rows Modified
function sqlite3_changes(sqlite3: pointer): integer; cdecl; external 'sqlite3.dll';
//Reset All Bindings On A Prepared Statement
function sqlite3_clear_bindings(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Closing A Database Connection
function  sqlite3_close(sqlite3: pointer): integer; cdecl; external 'sqlite3.dll';
//Collation Needed Callbacks
function sqlite3_collation_needed(sqlite3: pointer;pCollNeededArg:pointer;CollationFunctionPtr: Pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_collation_needed16(sqlite3: pointer;pCollNeededArg:pointer;CollationFunctionPtr: Pointer): integer; cdecl; external 'sqlite3.dll';
//Result Values From A Query
function  sqlite3_column_blob(sqlite3_stmt: pointer; col: integer): pointer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_bytes(sqlite3_stmt: pointer; col: integer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_bytes16(sqlite3_stmt: pointer; col: integer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_double(sqlite3_stmt: pointer; col: integer): double; cdecl; external 'sqlite3.dll';
function  sqlite3_column_int(sqlite3_stmt: pointer; col: integer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_int64(sqlite3_stmt: pointer; col: integer): Int64; cdecl; external 'sqlite3.dll';
function  sqlite3_column_text(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_text16(sqlite3_stmt: pointer; col: integer): PWChar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_type(sqlite3_stmt: pointer; col: integer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_value(sqlite3_stmt: pointer; ColNum: integer): pchar; cdecl; external 'sqlite3.dll';
//Number Of Columns In A Result Set
function  sqlite3_column_count(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Source Of Data In A Query Result
function  sqlite3_column_database_name(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_database_name16(sqlite3_stmt: pointer; col: integer): PWChar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_table_name(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_table_name16(sqlite3_stmt: pointer; col: integer): pointer; cdecl; external 'sqlite3.dll';
function  sqlite3_column_origin_name(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_origin_name16(sqlite3_stmt: pointer; col: integer): pointer; cdecl; external 'sqlite3.dll';
//Declared Datatype Of A Query Result
function  sqlite3_column_decltype(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_decltype16(sqlite3_stmt: pointer; col: integer): PWChar; cdecl; external 'sqlite3.dll';
//Column Names In A Result Set
function  sqlite3_column_name(sqlite3_stmt: pointer; col: integer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_column_name16(sqlite3_stmt: pointer; col: integer): pointer; cdecl; external 'sqlite3.dll';
//Commit And Rollback Notification Callbacks
function  sqlite3_commit_hook(sqlite3: pointer; i: integer; p: pointer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_rollback_hook(sqlite3: pointer; v1,v2: pointer): pchar; cdecl; external 'sqlite3.dll';
//Determine If An SQL Statement Is Complete
function  sqlite3_complete(SQL:pchar): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_complete16(SQL:PWChar): integer; cdecl; external 'sqlite3.dll';
//Database Connection For Functions
function  sqlite3_context_db_handle(sqlite3_context:pointer): pointer; cdecl; external 'sqlite3.dll';
//Define New Collating Sequences
function  sqlite3_create_collation(sqlite3: Pointer; CollName: PChar; eTextRep: Integer; pCtx: Pointer; compareFuncPtr: Pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_create_collation_v2(sqlite3: Pointer; CollName: PWChar; eTextRep: Integer; pCtx: Pointer; compareFuncPtr: Pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_create_collation16(sqlite3:pointer;zName:PWChar;eTextRep: Integer; pCtx: Pointer; compareFuncPtr: Pointer): integer; cdecl; external 'sqlite3.dll';
//Create Or Redefine SQL Functions
function  sqlite3_create_function(sqlite3: pointer; zFunctionName: pchar; nArg: integer; eTextRep: Integer; pApp: pointer; xFunc: pointer; xStep: pointer; xFinal: pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_create_function16(sqlite3: pointer; zFunctionName: pwchar; nArg: integer; eTextRep: Integer; pApp: pointer; xFunc: pointer; xStep: pointer; xFinal: pointer): integer; cdecl; external 'sqlite3.dll';
//Number of columns in a result set
function  sqlite3_data_count(sqlite3_stmt:pointer): integer; cdecl; external 'sqlite3.dll';
//Find The Database Handle Of A Prepared Statement
function  sqlite3_db_handle(sqlite3_stmt:pointer): pointer; cdecl; external 'sqlite3.dll';
//Retrieve the mutex for a database connection
function  sqlite3_db_mutex(sqlite3:pointer): pointer; cdecl; external 'sqlite3.dll';
//Enable Or Disable Extension Loading
function  sqlite3_enable_load_extension(sqlite3:pointer;onoff:integer): integer; cdecl; external 'sqlite3.dll';
//Enable Or Disable Shared Pager Cache
function  sqlite3_enable_shared_cache(i:integer): integer; cdecl; external 'sqlite3.dll';
//Error Codes And Messages
function  sqlite3_errcode(sqlite3:pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_extended_errcode(sqlite3:pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_errmsg(sqlite3:pointer): pchar; cdecl; external 'sqlite3.dll';
function  sqlite3_errmsg16(sqlite3:pointer): PWChar; cdecl; external 'sqlite3.dll';
//One-Step Query Execution Interface
function  sqlite3_exec(sqlite3: pointer; sql: pchar; callback: pointer; userdata: pchar; var errmsg: pchar): integer; cdecl; external 'sqlite3.dll';
//Enable Or Disable Extended Result Codes
function  sqlite3_extended_result_codes(sqlite3:pointer;onoff:integer): integer; cdecl; external 'sqlite3.dll';
//Low-Level Control Of Database Files
function  sqlite3_file_control(sqlite3:pointer;zDbName:pchar;op:integer;v:pointer): integer; cdecl; external 'sqlite3.dll';
//Destroy A Prepared Statement Object
function  sqlite3_finalize(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Memory Allocation Subsystem
function sqlite3_malloc(i: integer):pointer; cdecl; external 'sqlite3.dll';
function sqlite3_realloc(v:pointer;i: integer):pointer; cdecl; external 'sqlite3.dll';
procedure sqlite3_free(ptr: pchar); cdecl; external 'sqlite3.dll';
//Convenience Routines For Running Queries
function  sqlite3_get_table(sqlite3: pointer; sql: pchar; var result: PPCharArray; var RowCount: Cardinal; var ColCount: Cardinal; var errmsg: pchar): integer; cdecl; external 'sqlite3.dll';
procedure sqlite3_free_table(table: PPCharArray); cdecl; external 'sqlite3.dll';
//Test For Auto-Commit Mode
function sqlite3_get_autocommit(sqlite3: pointer):integer; cdecl; external 'sqlite3.dll';
//Function Auxiliary Data
function sqlite3_get_auxdata(sqlite3_context: pointer;N:integer):pointer; cdecl; external 'sqlite3.dll';
procedure sqlite3_set_auxdata(sqlite3_context: pointer;N:integer;v1,v2:pointer); cdecl; external 'sqlite3.dll';
//Initialize The SQLite Library
function sqlite3_initialize(v:pointer):integer; cdecl; external 'sqlite3.dll';
function sqlite3_shutdown(v:pointer):integer; cdecl; external 'sqlite3.dll';
function sqlite3_os_init(v:pointer):integer; cdecl; external 'sqlite3.dll';
function sqlite3_os_end(v:pointer):integer; cdecl; external 'sqlite3.dll';
//Interrupt A Long-Running Query
procedure sqlite3_interrupt(sqlite3: pointer); cdecl; external 'sqlite3.dll';
//Last Insert Rowid
function  sqlite3_last_insert_rowid(sqlite3: pointer): int64; cdecl; external 'sqlite3.dll';
//Run-Time Library Version Numbers
function sqlite3_libversion:pchar; cdecl; external 'sqlite3.dll';
function sqlite3_libversion_number:integer; cdecl; external 'sqlite3.dll';
//Run-time Limits
function sqlite3_limit(sqlite3:pointer;id,newVal:integer):integer; cdecl; external 'sqlite3.dll';
//Load An Extension
function sqlite3_load_extension(sqlite3:pointer;zFile,zProc:pchar;pzErrMsg:PPCharArray):integer; cdecl; external 'sqlite3.dll';
//Memory Allocator Statistics
function sqlite3_memory_used(v: pointer): int64; cdecl; external 'sqlite3.dll';
function sqlite3_memory_highwater(resetFlag: integer): int64; cdecl; external 'sqlite3.dll';
//Formatted String Printing Functions
function sqlite3_mprintf(v: pchar): pchar; cdecl; external 'sqlite3.dll';
function sqlite3_vmprintf(v: pchar;valist:PPCharArray): pchar; cdecl; external 'sqlite3.dll';
function sqlite3_snprintf(i:integer;v1,v2: pchar): pchar; cdecl; external 'sqlite3.dll';
//Mutexes
function sqlite3_mutex_alloc(i: integer): pointer; cdecl; external 'sqlite3.dll';
procedure sqlite3_mutex_free(sqlite3_mutex: pointer); cdecl; external 'sqlite3.dll';
procedure sqlite3_mutex_enter(sqlite3_mutex: pointer); cdecl; external 'sqlite3.dll';
function sqlite3_mutex_try(sqlite3_mutex: pointer): integer; cdecl; external 'sqlite3.dll';
procedure sqlite3_mutex_leave(sqlite3_mutex: pointer); cdecl; external 'sqlite3.dll';
//Mutex Verification Routines
function sqlite3_mutex_held(sqlite3_mutex: pointer): integer; cdecl; external 'sqlite3.dll';
function sqlite3_mutex_notheld(sqlite3_mutex: pointer): integer; cdecl; external 'sqlite3.dll';
//Find the next prepared statement
function sqlite3_next_stmt(sqlite3,sqlite3_stmt: pointer): pointer; cdecl; external 'sqlite3.dll';
//Opening A New Database Connection
function  sqlite3_open(filename: pchar; var sqlite3: pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_open16(filename: pwchar; var sqlite3: pointer): integer; cdecl; external 'sqlite3.dll';
function  sqlite3_open_v2(filename: pchar; var sqlite3: pointer;flags:integer;zVfs:pointer): integer; cdecl; external 'sqlite3.dll';
//Compiling An SQL Statement
function sqlite3_prepare(sqlite3:pointer;sql:pchar;nBytes:integer;var stmt:pointer;var ztail:pchar):integer; cdecl; external 'sqlite3.dll';
function sqlite3_prepare_v2(sqlite3:pointer;sql:pchar;nBytes:integer;var stmt:pointer;var ztail:pchar):integer; cdecl; external 'sqlite3.dll';
function sqlite3_prepare16(sqlite3:pointer;sql:pwchar;nBytes:integer;var stmt:pointer;var ztail:pchar):integer; cdecl; external 'sqlite3.dll';
function sqlite3_prepare16_v2(sqlite3:pointer;sql:pwchar;nBytes:integer;var stmt:pointer;var ztail:pchar):integer; cdecl; external 'sqlite3.dll';
//Query Progress Callbacks
function  sqlite3_progress_handler(sqlite3:pointer;iMax:integer;pCallBack:pointer;p:pointer): integer; cdecl; external 'sqlite3.dll';
//Pseudo-Random Number Generator
procedure sqlite3_randomness(n:integer;p:pointer); cdecl; external 'sqlite3.dll';
//Attempt To Free Heap Memory
function  sqlite3_release_memory(imem:integer): integer; cdecl; external 'sqlite3.dll';
//Reset A Prepared Statement Object
function  sqlite3_reset(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Reset Automatic Extension Loading
procedure  sqlite3_reset_auto_extension(ext: pointer); cdecl; external 'sqlite3.dll';
//Setting The Result Of An SQL Function
function sqlite3_result_blob(sqlite3_context:pointer;Buf:pointer;LengthBuf:integer;RetunrMod:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_double(sqlite3_context:pointer;result:double):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_error(sqlite3_context:pointer;msg:pchar;result:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_error16(sqlite3_context:pointer;msg:pwchar;result:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_error_toobig(sqlite3_context:pointer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_error_nomem(sqlite3_context:pointer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_error_code(sqlite3_context:pointer;result:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_int(sqlite3_context:pointer;result:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_int64(sqlite3_context:pointer;result:int64):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_null(sqlite3_context:pointer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_text(sqlite3_context:pointer;Buf:pointer;LengthBuf:integer;RetunrMod:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_text16(sqlite3_context:pointer;Buf:pwchar;LengthBuf:integer;RetunrMod:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_text16le(sqlite3_context:pointer;Buf:pwchar;LengthBuf:integer;RetunrMod:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_text16be(sqlite3_context:pointer;Buf:pwchar;LengthBuf:integer;RetunrMod:integer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_value(sqlite3_context,sqlite3_value:pointer):integer;cdecl; external 'sqlite3.dll';
function sqlite3_result_zeroblob(sqlite3_context:pointer;n:integer):integer;cdecl; external 'sqlite3.dll';
//Compile-Time Authorization Callbacks
function sqlite3_set_authorizer(sqlite3:pointer;n:integer;pUserData:pointer):integer;cdecl; external 'sqlite3.dll';
//Suspend Execution For A Short Time
function sqlite3_sleep(mstime:integer):integer;cdecl; external 'sqlite3.dll';
//Impose A Limit On Heap Size
procedure sqlite3_soft_heap_limit(i:integer); cdecl; external 'sqlite3.dll';
//Retrieving Statement SQL
function sqlite3_sql(sqlite3_stmt:pointer):pchar;cdecl; external 'sqlite3.dll';
//Evaluate An SQL Statement
function sqlite3_step(sqlite3_stmt: pointer): integer; cdecl; external 'sqlite3.dll';
//Extract Metadata About A Column Of A Table
function sqlite3_table_column_metadata(sqlite3:pointer;zDbName:pchar;zTableName:pchar;zColumnName:pchar;pzDataType,pzCollSeq:ppchar;pNotNull,pPrimaryKey,pAutoinc:boolean): integer; cdecl; external 'sqlite3.dll';
//Test To See If The Library Is Threadsafe
function sqlite3_threadsafe(v: Pointer): Integer; cdecl; external 'sqlite3.dll';
//Total Number Of Rows Modified
function sqlite3_total_changes(sqlite3:Pointer): Integer; cdecl; external 'sqlite3.dll';
//Data Change Notification Callbacks
function sqlite3_update_hook(sqlite3:Pointer;p:pointer): Integer; cdecl; external 'sqlite3.dll';
//User Data For Functions
function sqlite3_user_data(sqlite3_context:Pointer): pointer; cdecl; external 'sqlite3.dll';
//Obtaining SQL Function Parameter Values
function sqlite3_value_blob(sqlite3_value: Pointer): pointer; cdecl; external 'sqlite3.dll';
function sqlite3_value_bytes(sqlite3_value: Pointer): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_value_bytes16(sqlite3_value: Pointer): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_value_double(sqlite3_value: Pointer): double; cdecl; external 'sqlite3.dll';
function sqlite3_value_int(sqlite3_value: Pointer): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_value_int64(sqlite3_value: Pointer): int64; cdecl; external 'sqlite3.dll';
function sqlite3_value_text(sqlite3_value: Pointer): PAnsiChar; cdecl; external 'sqlite3.dll';
function sqlite3_value_text16(sqlite3_value: Pointer): PWideChar; cdecl; external 'sqlite3.dll';
function sqlite3_value_text16le(sqlite3_value: Pointer): PWideChar; cdecl; external 'sqlite3.dll';
function sqlite3_value_text16be(sqlite3_value: Pointer): PWideChar; cdecl; external 'sqlite3.dll';
function sqlite3_value_type(sqlite3_value: Pointer): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_value_numeric_type(sqlite3_value: Pointer): Integer; cdecl; external 'sqlite3.dll';
//Virtual File System Objects
function sqlite3_vfs_find(zVfsName: pchar): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_vfs_register(sqlite3_vfs:pointer;makeDflt:integer): Integer; cdecl; external 'sqlite3.dll';
function sqlite3_vfs_unregister(sqlite3_vfs:pointer): Integer; cdecl; external 'sqlite3.dll';

//Deprecated Functions
//sqlite3_aggregate_count
//sqlite3_expired
//sqlite3_global_recover
//sqlite3_memory_alarm
//sqlite3_thread_cleanup
//sqlite3_transfer_bindings

//Experimental Functions
//sqlite3_config
//sqlite3_create_module
//sqlite3_create_module_v2
//sqlite3_db_config
//sqlite3_db_status
//sqlite3_declare_vtab
//sqlite3_overload_function
//sqlite3_profile
//sqlite3_status
//sqlite3_stmt_status
//sqlite3_trace

//======================
//FONCTIONS PERSONNELLES
//======================

function SQLite_sError(SQLiteErrorCode: Integer): AnsiString;

implementation


function SQLite_sError(SQLiteErrorCode: Integer): AnsiString;
begin
  case SQLiteErrorCode of
    SQLITE_OK: Result := 'Successful result';
    SQLITE_ERROR: Result := 'SQL error or missing database';
    SQLITE_INTERNAL: Result := 'An internal logic error in SQLite';
    SQLITE_PERM: Result := 'Access permission denied';
    SQLITE_ABORT: Result := 'Callback routine requested an abort';
    SQLITE_BUSY: Result := 'The database file is locked';
    SQLITE_LOCKED: Result := 'A table in the database is locked';
    SQLITE_NOMEM: Result := 'A malloc() failed';
    SQLITE_READONLY: Result := 'Attempt to write a readonly database';
    SQLITE_INTERRUPT: Result := 'Operation terminated by sqlite3_interrupt()';
    SQLITE_IOERR: Result := 'Some kind of disk I/O error occurred';
    SQLITE_CORRUPT: Result := 'The database disk image is malformed';
    //SQLITE_NOTFOUND: Result := '(Internal Only) Table or record not found';
    SQLITE_FULL: Result := 'Insertion failed because database is full';
    SQLITE_CANTOPEN: Result := 'Unable to open the database file';
    //SQLITE_PROTOCOL: Result := 'Database lock protocol error';
    SQLITE_EMPTY: Result := 'Database is empty';
    SQLITE_SCHEMA: Result := 'The database schema changed';
    SQLITE_TOOBIG: Result := 'Too much data for one row of a table';
    SQLITE_CONSTRAINT: Result := 'Abort due to contraint violation';
    SQLITE_MISMATCH: Result := 'Data type mismatch';
    SQLITE_MISUSE: Result := 'Library used incorrectly';
    SQLITE_NOLFS: Result := 'Uses OS features not supported on host';
    SQLITE_AUTH: Result := 'Authorization denied';
    SQLITE_FORMAT: Result := 'Auxiliary database format error';
    SQLITE_RANGE: Result := '2nd parameter to sqlite3_bind out of range';
    SQLITE_NOTADB: Result := 'File opened that is not a database file';
    SQLITE_ROW: Result := 'sqlite3_step() has another row ready';
    SQLITE_DONE: Result := 'sqlite3_step() has finished executing';
  else
    Result := 'Unknown SQLite Error Code "' + IntToStr(SQLiteErrorCode) + '"';
  end;
end;

end.

