mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 17:06:14 +02:00
* Patch from Luiz Américo:
Sqlite interface: - Added missing constant - Remapps sqlite_version from cvar to function call, the former was not working in win32 - Clean up the code SQLite Dataset : - Reduce memory usage - Replaces TList with TFPList - Add auxiliary QuickQuery functions - Misc fixes git-svn-id: trunk@827 -
This commit is contained in:
parent
53dad79aaf
commit
e050f7ddb1
@ -37,7 +37,6 @@ type
|
||||
PPDataRecord = ^PDataRecord;
|
||||
DataRecord = record
|
||||
Row: PPchar;
|
||||
BookmarkData: Pointer;
|
||||
BookmarkFlag: TBookmarkFlag;
|
||||
Next: PDataRecord;
|
||||
Previous: PDataRecord;
|
||||
@ -78,10 +77,10 @@ type
|
||||
FSaveOnClose: Boolean;
|
||||
FSaveOnRefetch: Boolean;
|
||||
FComplexSql: Boolean;
|
||||
FUpdatedItems: TList;
|
||||
FAddedItems: TList;
|
||||
FDeletedItems: TList;
|
||||
FOrphanItems: TList;
|
||||
FUpdatedItems: TFPList;
|
||||
FAddedItems: TFPList;
|
||||
FDeletedItems: TFPList;
|
||||
FOrphanItems: TFPList;
|
||||
FMasterLink: TMasterDataLink;
|
||||
FIndexFieldNames: String;
|
||||
FIndexFieldList: TList;
|
||||
@ -105,6 +104,7 @@ type
|
||||
function SqliteExec(AHandle: Pointer; Sql:PChar):Integer;virtual; abstract;
|
||||
procedure SqliteClose(AHandle: Pointer);virtual;abstract;
|
||||
function GetSqliteHandle: Pointer; virtual; abstract;
|
||||
function GetSqliteVersion: String; virtual; abstract;
|
||||
procedure BuildLinkedList; virtual; abstract;
|
||||
function SqliteReturnString: String; virtual; abstract;
|
||||
function TableExists: Boolean;virtual;abstract;
|
||||
@ -153,6 +153,9 @@ type
|
||||
function CreateTable: Boolean; virtual;
|
||||
function ExecSQL:Integer;
|
||||
function ExecSQL(const ASql:String):Integer;
|
||||
function QuickQuery(const ASql:String):String;overload;
|
||||
function QuickQuery(const ASql:String;const AStrList: TStrings):String;overload;
|
||||
function QuickQuery(const ASql:String;const AStrList: TStrings;FillObjects:Boolean):String;virtual;abstract;overload;
|
||||
procedure RefetchData;
|
||||
function UpdatesPending: Boolean;
|
||||
{$ifdef DEBUGACTIVEBUFFER}
|
||||
@ -162,9 +165,9 @@ type
|
||||
{$ifdef USE_SQLITEDS_INTERNALS}
|
||||
property BeginItem: PDataRecord read FBeginItem;
|
||||
property EndItem: PDataRecord read FEndItem;
|
||||
property UpdatedItems: TList read FUpdatedItems;
|
||||
property AddedItems: TList read FAddedItems;
|
||||
property DeletedItems: TList read FDeletedItems;
|
||||
property UpdatedItems: TFPList read FUpdatedItems;
|
||||
property AddedItems: TFPList read FAddedItems;
|
||||
property DeletedItems: TFPList read FDeletedItems;
|
||||
{$endif}
|
||||
property ComplexSql: Boolean read FComplexSql write FComplexSql;
|
||||
property ExpectedAppends: Integer read FExpectedAppends write SetExpectedAppends;
|
||||
@ -172,6 +175,8 @@ type
|
||||
property ExpectedDeletes: Integer read FExpectedDeletes write SetExpectedDeletes;
|
||||
property IndexFields[Value: Integer]: TField read GetIndexFields;
|
||||
property SqliteReturnId: Integer read FSqliteReturnId;
|
||||
property SqliteHandle: Pointer read FSqliteHandle;
|
||||
property SqliteVersion: String read GetSqliteVersion;
|
||||
published
|
||||
property IndexFieldNames: string read FIndexFieldNames write FIndexFieldNames;
|
||||
property FileName: String read FFileName write FFileName;
|
||||
@ -325,13 +330,13 @@ begin
|
||||
FIndexFieldList:=TList.Create;
|
||||
BookmarkSize := SizeOf(Pointer);
|
||||
FBufferSize := SizeOf(PPDataRecord);
|
||||
FUpdatedItems:= TList.Create;
|
||||
FUpdatedItems:= TFPList.Create;
|
||||
FUpdatedItems.Capacity:=20;
|
||||
FAddedItems:= TList.Create;
|
||||
FAddedItems:= TFPList.Create;
|
||||
FAddedItems.Capacity:=20;
|
||||
FOrphanItems:= TList.Create;
|
||||
FOrphanItems:= TFPList.Create;
|
||||
FOrphanItems.Capacity:=20;
|
||||
FDeletedItems:= TList.Create;
|
||||
FDeletedItems:= TFPList.Create;
|
||||
FDeletedItems.Capacity:=20;
|
||||
inherited Create(AOwner);
|
||||
end;
|
||||
@ -359,7 +364,7 @@ end;
|
||||
function TCustomSqliteDataset.GetIndexFields(Value: Integer): TField;
|
||||
begin
|
||||
if (Value < 0) or (Value > FIndexFieldList.Count - 1) then
|
||||
DatabaseError('Error acessing IndexFields: Index out of bonds');
|
||||
DatabaseError('Error acessing IndexFields: Index out of bonds',Self);
|
||||
Result:= TField(FIndexFieldList[Value]);
|
||||
end;
|
||||
|
||||
@ -407,7 +412,7 @@ end;
|
||||
|
||||
procedure TCustomSqliteDataset.GetBookmarkData(Buffer: PChar; Data: Pointer);
|
||||
begin
|
||||
Pointer(Data^) := PPDataRecord(Buffer)^^.BookmarkData;
|
||||
Pointer(Data^) := PPDataRecord(Buffer)^;
|
||||
end;
|
||||
|
||||
function TCustomSqliteDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
|
||||
@ -467,11 +472,7 @@ begin
|
||||
if Result = grOk then
|
||||
begin
|
||||
PDataRecord(Pointer(Buffer)^):=FCurrentItem;
|
||||
with FCurrentItem^ do
|
||||
begin
|
||||
BookmarkData := FCurrentItem;
|
||||
BookmarkFlag := bfCurrent;
|
||||
end;
|
||||
FCurrentItem^.BookmarkFlag := bfCurrent;
|
||||
end
|
||||
else if (Result = grError) and DoCheck then
|
||||
DatabaseError('SqliteDs - No records',Self);
|
||||
@ -634,9 +635,9 @@ procedure TCustomSqliteDataset.InternalOpen;
|
||||
begin
|
||||
FAutoIncFieldNo:=-1;
|
||||
if not FileExists(FFileName) then
|
||||
DatabaseError('TCustomSqliteDataset - File '+FFileName+' not found');
|
||||
DatabaseError('TCustomSqliteDataset - File "'+FFileName+'" not found',Self);
|
||||
if (FTablename = '') and not (FComplexSql) then
|
||||
DatabaseError('TCustomSqliteDataset - Tablename not set');
|
||||
DatabaseError('TCustomSqliteDataset - Tablename not set',Self);
|
||||
|
||||
if MasterSource <> nil then
|
||||
begin
|
||||
@ -660,7 +661,7 @@ begin
|
||||
|
||||
UpdateIndexFields;
|
||||
if FMasterLink.Active and (FIndexFieldList.Count <> FMasterLink.Fields.Count) then
|
||||
DatabaseError('MasterFields count doesnt match IndexFields count');
|
||||
DatabaseError('MasterFields count doesnt match IndexFields count',Self);
|
||||
|
||||
// Get PrimaryKeyNo if available
|
||||
if Fields.FindField(FPrimaryKey) <> nil then
|
||||
@ -690,7 +691,7 @@ end;
|
||||
|
||||
procedure TCustomSqliteDataset.SetBookmarkData(Buffer: PChar; Data: Pointer);
|
||||
begin
|
||||
PPDataRecord(Buffer)^^.BookmarkData := Pointer(Data^);
|
||||
//The BookMarkData is the Buffer itsef;
|
||||
end;
|
||||
|
||||
procedure TCustomSqliteDataset.SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
|
||||
@ -714,6 +715,8 @@ procedure TCustomSqliteDataset.SetExpectedDeletes(AValue:Integer);
|
||||
begin
|
||||
if Assigned(FDeletedItems) then
|
||||
FDeletedItems.Capacity:=AValue;
|
||||
if Assigned(FOrphanItems) then
|
||||
FOrphanItems.Capacity:=AValue;
|
||||
end;
|
||||
|
||||
procedure TCustomSqliteDataset.SetFieldData(Field: TField; Buffer: Pointer);
|
||||
@ -757,7 +760,7 @@ var
|
||||
TempItem:PDataRecord;
|
||||
begin
|
||||
if (Value >= FRecordCount) or (Value < 0) then
|
||||
DatabaseError('SqliteDs - Record Number Out Of Range');
|
||||
DatabaseError('SqliteDs - Record Number Out Of Range',Self);
|
||||
TempItem:=FBeginItem;
|
||||
for Counter := 0 to Value do
|
||||
TempItem:=TempItem^.Next;
|
||||
@ -805,7 +808,7 @@ end;
|
||||
procedure TCustomSqliteDataset.SetMasterFields(Value: String);
|
||||
begin
|
||||
if Active then
|
||||
DatabaseError('It''s not allowed to set MasterFields property in a open dataset');
|
||||
DatabaseError('It''s not allowed to set MasterFields property in a open dataset',Self);
|
||||
FMasterLink.FieldNames:=Value;
|
||||
end;
|
||||
|
||||
@ -852,7 +855,7 @@ begin
|
||||
if FFileName <> '' then
|
||||
AHandle := GetSqliteHandle
|
||||
else
|
||||
DatabaseError ('ExecSql - FileName not set');
|
||||
DatabaseError ('ExecSql - FileName not set',Self);
|
||||
FSqliteReturnId:= SqliteExec(AHandle,PChar(ASql));
|
||||
//todo: add a way to get the num of changes
|
||||
//Result:=sqlite_changes(AHandle);
|
||||
@ -1079,6 +1082,17 @@ begin
|
||||
(FAddedItems.Count > 0) or (FUpdatedItems.Count > 0);
|
||||
end;
|
||||
|
||||
function TCustomSqliteDataset.QuickQuery(const ASql:String):String;
|
||||
begin
|
||||
Result:=QuickQuery(ASql,nil,False);
|
||||
end;
|
||||
|
||||
function TCustomSqliteDataset.QuickQuery(const ASql:String;const AStrList: TStrings):String;
|
||||
begin
|
||||
Result:=QuickQuery(ASql,AStrList,False)
|
||||
end;
|
||||
|
||||
|
||||
{$ifdef DEBUGACTIVEBUFFER}
|
||||
procedure TCustomSqliteDataset.SetCurrentItem(Value:PDataRecord);
|
||||
var
|
||||
|
@ -37,6 +37,7 @@ type
|
||||
private
|
||||
function SqliteExec(AHandle: Pointer; ASql:PChar):Integer;override;
|
||||
function GetSqliteHandle: Pointer; override;
|
||||
function GetSqliteVersion: String; override;
|
||||
procedure SqliteClose(AHandle: Pointer);override;
|
||||
procedure BuildLinkedList; override;
|
||||
protected
|
||||
@ -44,6 +45,7 @@ type
|
||||
public
|
||||
function SqliteReturnString: String; override;
|
||||
function TableExists: Boolean;override;
|
||||
function QuickQuery(const ASql:String;const AStrList: TStrings;FillObjects:Boolean):String;override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -285,6 +287,63 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TSqlite3Dataset.GetSqliteVersion: String;
|
||||
begin
|
||||
Result:=StrPas(sqlite3_version);
|
||||
end;
|
||||
|
||||
function TSqlite3Dataset.QuickQuery(const ASql:String;const AStrList: TStrings;FillObjects:Boolean):String;
|
||||
var
|
||||
vm,AHandle:Pointer;
|
||||
|
||||
procedure FillStrings;
|
||||
begin
|
||||
while FSqliteReturnId = SQLITE_ROW do
|
||||
begin
|
||||
AStrList.Add(StrPas(sqlite3_column_text(vm,0)));
|
||||
FSqliteReturnId:=sqlite3_step(vm);
|
||||
end;
|
||||
end;
|
||||
procedure FillStringsAndObjects;
|
||||
begin
|
||||
while FSqliteReturnId = SQLITE_ROW do
|
||||
begin
|
||||
AStrList.AddObject(StrPas(sqlite3_column_text(vm,0)),TObject(sqlite3_column_int(vm,1)));
|
||||
FSqliteReturnId:=sqlite3_step(vm);
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
if FSqliteHandle <> nil then
|
||||
AHandle:=FSqliteHandle
|
||||
else
|
||||
if FileExists(FFileName) then
|
||||
AHandle:=GetSqliteHandle
|
||||
else
|
||||
DatabaseError('File '+FFileName+' not Exists',Self);
|
||||
Result:='';
|
||||
if AStrList <> nil then
|
||||
AStrList.Clear;
|
||||
FSqliteReturnId:=sqlite3_prepare(AHandle,Pchar(ASql),-1,@vm,nil);
|
||||
//FSqliteReturnId:=sqlite_compile(AHandle,Pchar(ASql),nil,@vm,nil);
|
||||
if FSqliteReturnId <> SQLITE_OK then
|
||||
DatabaseError('Error returned by sqlite in QuickQuery: '+SqliteReturnString,Self);
|
||||
|
||||
FSqliteReturnId:=sqlite3_step(vm);
|
||||
if (FSqliteReturnId = SQLITE_ROW) and (sqlite3_column_count(vm) > 0) then
|
||||
begin
|
||||
Result:=StrPas(sqlite3_column_text(vm,0));
|
||||
if AStrList <> nil then
|
||||
begin
|
||||
if FillObjects and (sqlite3_column_count(vm) > 1) then
|
||||
FillStringsAndObjects
|
||||
else
|
||||
FillStrings;
|
||||
end;
|
||||
end;
|
||||
sqlite3_finalize(vm);
|
||||
if FSqliteHandle = nil then
|
||||
sqlite3_close(AHandle);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -37,6 +37,8 @@ type
|
||||
private
|
||||
function SqliteExec(AHandle: Pointer; ASql:PChar):Integer;override;
|
||||
function GetSqliteHandle: Pointer; override;
|
||||
function GetSqliteEncoding: String;
|
||||
function GetSqliteVersion: String; override;
|
||||
procedure SqliteClose(AHandle: Pointer);override;
|
||||
procedure BuildLinkedList; override;
|
||||
protected
|
||||
@ -44,6 +46,8 @@ type
|
||||
public
|
||||
function SqliteReturnString: String; override;
|
||||
function TableExists: Boolean;override;
|
||||
function QuickQuery(const ASql:String;const AStrList: TStrings;FillObjects:Boolean):String;override;
|
||||
property SqliteEncoding: String read GetSqliteEncoding;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -254,7 +258,7 @@ begin
|
||||
{$endif}
|
||||
Result:=FSqliteReturnId = SQLITE_ROW;
|
||||
sqlite_finalize(vm, nil);
|
||||
if (FSqliteHandle = nil) then
|
||||
if FSqliteHandle = nil then
|
||||
SqliteClose(AHandle);
|
||||
end;
|
||||
{$ifdef DEBUG}
|
||||
@ -290,7 +294,7 @@ begin
|
||||
SQLITE_NOLFS : Result := 'SQLITE_NOLFS ';
|
||||
SQLITE_AUTH : Result := 'SQLITE_AUTH ';
|
||||
SQLITE_FORMAT : Result := 'SQLITE_FORMAT ';
|
||||
// SQLITE_RANGE : Result := 'SQLITE_RANGE ';
|
||||
SQLITE_RANGE : Result := 'SQLITE_RANGE ';
|
||||
SQLITE_ROW : Result := 'SQLITE_ROW ';
|
||||
SQLITE_DONE : Result := 'SQLITE_DONE ';
|
||||
else
|
||||
@ -298,6 +302,70 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TSqliteDataset.GetSqliteEncoding: String;
|
||||
begin
|
||||
Result:=StrPas(sqlite_encoding);
|
||||
end;
|
||||
|
||||
function TSqliteDataset.GetSqliteVersion: String;
|
||||
begin
|
||||
Result:=StrPas(sqlite_version);
|
||||
end;
|
||||
|
||||
function TSqliteDataset.QuickQuery(const ASql:String;const AStrList: TStrings;FillObjects:Boolean):String;
|
||||
var
|
||||
vm,AHandle:Pointer;
|
||||
ColumnNames,ColumnValues:PPChar;
|
||||
ColCount:Integer;
|
||||
|
||||
procedure FillStrings;
|
||||
begin
|
||||
while FSqliteReturnId = SQLITE_ROW do
|
||||
begin
|
||||
AStrList.Add(StrPas(ColumnValues[0]));
|
||||
FSqliteReturnId:=sqlite_step(vm,@ColCount,@ColumnValues,@ColumnNames);
|
||||
end;
|
||||
end;
|
||||
procedure FillStringsAndObjects;
|
||||
begin
|
||||
while FSqliteReturnId = SQLITE_ROW do
|
||||
begin
|
||||
// I know, this code is really dirty!!
|
||||
AStrList.AddObject(StrPas(ColumnValues[0]),TObject(StrToInt(StrPas(ColumnValues[1]))));
|
||||
FSqliteReturnId:=sqlite_step(vm,@ColCount,@ColumnValues,@ColumnNames);
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
if FSqliteHandle <> nil then
|
||||
AHandle:=FSqliteHandle
|
||||
else
|
||||
if FileExists(FFileName) then
|
||||
AHandle:=GetSqliteHandle
|
||||
else
|
||||
DatabaseError('File '+FFileName+' not Exists',Self);
|
||||
Result:='';
|
||||
if AStrList <> nil then
|
||||
AStrList.Clear;
|
||||
FSqliteReturnId:=sqlite_compile(AHandle,Pchar(ASql),nil,@vm,nil);
|
||||
if FSqliteReturnId <> SQLITE_OK then
|
||||
DatabaseError('Error returned by sqlite in QuickQuery: '+SqliteReturnString,Self);
|
||||
|
||||
FSqliteReturnId:=sqlite_step(vm,@ColCount,@ColumnValues,@ColumnNames);
|
||||
if (FSqliteReturnId = SQLITE_ROW) and (ColCount > 0) then
|
||||
begin
|
||||
Result:=StrPas(ColumnValues[0]);
|
||||
if AStrList <> nil then
|
||||
begin
|
||||
if FillObjects and (ColCount > 1) then
|
||||
FillStringsAndObjects
|
||||
else
|
||||
FillStrings;
|
||||
end;
|
||||
end;
|
||||
sqlite_finalize(vm, nil);
|
||||
if FSqliteHandle = nil then
|
||||
sqlite_close(AHandle);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -13,32 +13,14 @@ interface
|
||||
sqlite.h
|
||||
}
|
||||
|
||||
const
|
||||
External_library='sqlite'; {Setup as you need}
|
||||
|
||||
{ Pointers to basic pascal types, inserted by h2pas conversion program.}
|
||||
Type
|
||||
PLongint = ^Longint;
|
||||
PSmallInt = ^SmallInt;
|
||||
PByte = ^Byte;
|
||||
PWord = ^Word;
|
||||
PDWord = ^DWord;
|
||||
PDouble = ^Double;
|
||||
PPPchar = ^ppchar;
|
||||
|
||||
{$PACKRECORDS C}
|
||||
|
||||
const
|
||||
_SQLITE_VERSION = '2.8.3';
|
||||
SQLITE_ISO8859 = 1;
|
||||
|
||||
{$ifndef win32}
|
||||
var
|
||||
sqlite_version : pchar;cvar;external;
|
||||
sqlite_encoding : pchar;cvar;external;
|
||||
{$endif}
|
||||
|
||||
const
|
||||
External_library='sqlite';
|
||||
|
||||
SQLITE_ISO8859 = 1;//?
|
||||
|
||||
//sqlite_exec and sqlite_step return values
|
||||
SQLITE_OK = 0;
|
||||
SQLITE_ERROR = 1;
|
||||
SQLITE_INTERNAL = 2;
|
||||
@ -64,10 +46,11 @@ const
|
||||
SQLITE_NOLFS = 22;
|
||||
SQLITE_AUTH = 23;
|
||||
SQLITE_FORMAT = 24;
|
||||
SQLITE_RANGE = 25;
|
||||
SQLITE_ROW = 100;
|
||||
SQLITE_DONE = 101;
|
||||
|
||||
|
||||
// values used in sqlite_set_authorizer to define what operations authorize
|
||||
SQLITE_COPY = 0;
|
||||
SQLITE_CREATE_INDEX = 1;
|
||||
SQLITE_CREATE_TABLE = 2;
|
||||
@ -92,6 +75,8 @@ const
|
||||
SQLITE_SELECT = 21;
|
||||
SQLITE_TRANSACTION = 22;
|
||||
SQLITE_UPDATE = 23;
|
||||
|
||||
//Return values of the authorizer function
|
||||
SQLITE_DENY = 1;
|
||||
SQLITE_IGNORE = 2;
|
||||
|
||||
@ -99,8 +84,8 @@ const
|
||||
SQLITE_TEXT = -2;
|
||||
SQLITE_ARGS = -3;
|
||||
|
||||
|
||||
Type
|
||||
PPPchar = ^ppchar;
|
||||
Psqlite = Pointer;
|
||||
Psqlite_vm = Pointer;
|
||||
PPsqlite_vm = ^Psqlite_vm;
|
||||
@ -108,61 +93,64 @@ Type
|
||||
|
||||
// Procedural types used in functions.
|
||||
|
||||
sqlite_callback = function (_para1:pointer; _para2:longint; _para3:PPchar; _para4:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_trace_func = procedure (_para1:pointer; _para2:Pchar);{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_create_func = procedure (_para1:Psqlite_func; _para2:longint; _para3:PPchar);{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_handler = function (_para1:pointer; _para2:Pchar; _para3:longint):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_step_func = procedure (_para1:Psqlite_func; _para2:longint; _para3:PPchar) ;{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_finalize_func = procedure (_para1:Psqlite_func);{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_authorize_func = function (_para1:pointer; _para2:longint; _para3, _para4,_para5,_para6:Pchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};
|
||||
sqlite_callback = function (_para1:pointer; _para2:longint; _para3:PPchar; _para4:PPchar):longint;cdecl;
|
||||
sqlite_trace_func = procedure (_para1:pointer; _para2:Pchar);cdecl;
|
||||
sqlite_create_func = procedure (_para1:Psqlite_func; _para2:longint; _para3:PPchar);cdecl;
|
||||
sqlite_handler = function (_para1:pointer; _para2:Pchar; _para3:longint):longint;cdecl;
|
||||
sqlite_step_func = procedure (_para1:Psqlite_func; _para2:longint; _para3:PPchar);cdecl;
|
||||
sqlite_finalize_func = procedure (_para1:Psqlite_func);cdecl;
|
||||
sqlite_authorize_func = function (_para1:pointer; _para2:longint; _para3, _para4,_para5,_para6:Pchar):longint;cdecl;
|
||||
|
||||
function sqlite_create_function(_para1:Psqlite; zName:Pchar; nArg:longint; xFunc:sqlite_create_func; pUserData:pointer):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_create_function';
|
||||
function sqlite_open(filename:Pchar; mode:longint; errmsg:PPchar):Psqlite;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_open';
|
||||
procedure sqlite_close(_para1:Psqlite);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_close';
|
||||
function sqlite_exec(_para1:Psqlite; sql:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_exec';
|
||||
function sqlite_last_insert_rowid(_para1:Psqlite):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_last_insert_rowid';
|
||||
function sqlite_changes(_para1:Psqlite):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_changes';
|
||||
function sqlite_error_string(_para1:longint):Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_error_string';
|
||||
procedure do_sqlite_interrupt(_para1:Psqlite);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_interrupt';
|
||||
function sqlite_complete(sql:Pchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_complete';
|
||||
procedure sqlite_busy_handler(_para1:Psqlite; _para2:sqlite_handler; _para3:pointer);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_busy_handler';
|
||||
procedure sqlite_busy_timeout(_para1:Psqlite; ms:longint);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_busy_timeout';
|
||||
function sqlite_create_function(_para1:Psqlite; zName:Pchar; nArg:longint; xFunc:sqlite_create_func; pUserData:pointer):longint;cdecl;external External_library name 'sqlite_create_function';
|
||||
function sqlite_open(filename:Pchar; mode:longint; errmsg:PPchar):Psqlite;cdecl;external External_library name 'sqlite_open';
|
||||
procedure sqlite_close(_para1:Psqlite);cdecl;external External_library name 'sqlite_close';
|
||||
function sqlite_exec(_para1:Psqlite; sql:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar):longint;cdecl;external External_library name 'sqlite_exec';
|
||||
function sqlite_last_insert_rowid(_para1:Psqlite):longint;cdecl;external External_library name 'sqlite_last_insert_rowid';
|
||||
function sqlite_changes(_para1:Psqlite):longint;cdecl;external External_library name 'sqlite_changes';
|
||||
function sqlite_error_string(_para1:longint):Pchar;cdecl;external External_library name 'sqlite_error_string';
|
||||
procedure do_sqlite_interrupt(_para1:Psqlite);cdecl;external External_library name 'sqlite_interrupt';
|
||||
function sqlite_complete(sql:Pchar):longint;cdecl;external External_library name 'sqlite_complete';
|
||||
procedure sqlite_busy_handler(_para1:Psqlite; _para2:sqlite_handler; _para3:pointer);cdecl;external External_library name 'sqlite_busy_handler';
|
||||
procedure sqlite_busy_timeout(_para1:Psqlite; ms:longint);cdecl;external External_library name 'sqlite_busy_timeout';
|
||||
function sqlite_get_table(_para1:Psqlite; sql:Pchar; resultp:PPPchar; nrow:Plongint; ncolumn:Plongint;
|
||||
errmsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_get_table';
|
||||
procedure sqlite_free_table(result:PPchar);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_free_table';
|
||||
errmsg:PPchar):longint;cdecl;external External_library name 'sqlite_get_table';
|
||||
procedure sqlite_free_table(result:PPchar);cdecl;external External_library name 'sqlite_free_table';
|
||||
function sqlite_exec_printf(_para1:Psqlite; sqlFormat:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar;
|
||||
args:array of const):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_exec_printf';
|
||||
function sqlite_exec_printf(_para1:Psqlite; sqlFormat:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_exec_printf';
|
||||
args:array of const):longint;cdecl;external External_library name 'sqlite_exec_printf';
|
||||
function sqlite_exec_printf(_para1:Psqlite; sqlFormat:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar):longint;cdecl;external External_library name 'sqlite_exec_printf';
|
||||
function sqlite_exec_vprintf(_para1:Psqlite; sqlFormat:Pchar; _para3:sqlite_callback; _para4:pointer; errmsg:PPchar;
|
||||
ap:array of const):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_exec_vprintf';
|
||||
ap:array of const):longint;cdecl;external External_library name 'sqlite_exec_vprintf';
|
||||
function sqlite_get_table_printf(_para1:Psqlite; sqlFormat:Pchar; resultp:PPPchar; nrow:Plongint; ncolumn:Plongint;
|
||||
errmsg:PPchar; args:array of const):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_get_table_printf';
|
||||
errmsg:PPchar; args:array of const):longint;cdecl;external External_library name 'sqlite_get_table_printf';
|
||||
function sqlite_get_table_printf(_para1:Psqlite; sqlFormat:Pchar; resultp:PPPchar; nrow:Plongint; ncolumn:Plongint;
|
||||
errmsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_get_table_printf';
|
||||
errmsg:PPchar):longint;cdecl;external External_library name 'sqlite_get_table_printf';
|
||||
function sqlite_get_table_vprintf(_para1:Psqlite; sqlFormat:Pchar; resultp:PPPchar; nrow:Plongint; ncolumn:Plongint;
|
||||
errmsg:PPchar; ap:array of const):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_get_table_vprintf';
|
||||
function sqlite_mprintf(_para1:Pchar; args:array of const):Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_mprintf';
|
||||
function sqlite_mprintf(_para1:Pchar):Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_mprintf';
|
||||
procedure sqlite_freemem(p:pointer);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_freemem';
|
||||
function sqlite_libversion:Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_libversion';
|
||||
function sqlite_libencoding:Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_libencoding';
|
||||
errmsg:PPchar; ap:array of const):longint;cdecl;external External_library name 'sqlite_get_table_vprintf';
|
||||
function sqlite_mprintf(_para1:Pchar; args:array of const):Pchar;cdecl;external External_library name 'sqlite_mprintf';
|
||||
function sqlite_mprintf(_para1:Pchar):Pchar;cdecl;external External_library name 'sqlite_mprintf';
|
||||
procedure sqlite_freemem(p:pointer);cdecl;external External_library name 'sqlite_freemem';
|
||||
function sqlite_libversion:Pchar;cdecl;external External_library name 'sqlite_libversion';
|
||||
function sqlite_libencoding:Pchar;cdecl;external External_library name 'sqlite_libencoding';
|
||||
function sqlite_create_aggregate(_para1:Psqlite; zName:Pchar; nArg:longint; xStep:sqlite_step_func ; xFinalize:sqlite_finalize_func;
|
||||
pUserData:pointer):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_create_aggregate';
|
||||
function sqlite_function_type(db:Psqlite; zName:Pchar; datatype:longint):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_function_type';
|
||||
function sqlite_set_result_string(_para1:Psqlite_func; _para2:Pchar; _para3:longint):Pchar;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_set_result_string';
|
||||
procedure sqlite_set_result_int(_para1:Psqlite_func; _para2:longint);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_set_result_int';
|
||||
procedure sqlite_set_result_double(_para1:Psqlite_func; _para2:double);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_set_result_double';
|
||||
procedure sqlite_set_result_error(_para1:Psqlite_func; _para2:Pchar; _para3:longint);{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_set_result_error';
|
||||
function sqlite_user_data(_para1:Psqlite_func):pointer;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_user_data';
|
||||
function sqlite_aggregate_context(_para1:Psqlite_func; nBytes:longint):pointer;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_aggregate_context';
|
||||
function sqlite_aggregate_count(_para1:Psqlite_func):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_aggregate_count';
|
||||
function sqlite_set_authorizer(_para1:Psqlite; xAuth:sqlite_authorize_func ; pUserData:pointer):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_set_authorizer';
|
||||
function sqlite_trace(_para1:Psqlite; xTrace:sqlite_trace_func; _para3:pointer):pointer;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_trace';
|
||||
function sqlite_compile(db:Psqlite; zSql:Pchar; pzTail:PPchar; ppVm:PPsqlite_vm; pzErrmsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_compile';
|
||||
function sqlite_step(pVm:Psqlite_vm; pN:Plongint; pazValue:PPPchar; pazColName:PPPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_step';
|
||||
function sqlite_finalize(_para1:Psqlite_vm; pzErrMsg:PPchar):longint;{$ifdef win32}cdecl{$else}cdecl{$endif};external External_library name 'sqlite_finalize';
|
||||
|
||||
pUserData:pointer):longint;cdecl;external External_library name 'sqlite_create_aggregate';
|
||||
function sqlite_function_type(db:Psqlite; zName:Pchar; datatype:longint):longint;cdecl;external External_library name 'sqlite_function_type';
|
||||
function sqlite_set_result_string(_para1:Psqlite_func; _para2:Pchar; _para3:longint):Pchar;cdecl;external External_library name 'sqlite_set_result_string';
|
||||
procedure sqlite_set_result_int(_para1:Psqlite_func; _para2:longint);cdecl;external External_library name 'sqlite_set_result_int';
|
||||
procedure sqlite_set_result_double(_para1:Psqlite_func; _para2:double);cdecl;external External_library name 'sqlite_set_result_double';
|
||||
procedure sqlite_set_result_error(_para1:Psqlite_func; _para2:Pchar; _para3:longint);cdecl;external External_library name 'sqlite_set_result_error';
|
||||
function sqlite_user_data(_para1:Psqlite_func):pointer;cdecl;external External_library name 'sqlite_user_data';
|
||||
function sqlite_aggregate_context(_para1:Psqlite_func; nBytes:longint):pointer;cdecl;external External_library name 'sqlite_aggregate_context';
|
||||
function sqlite_aggregate_count(_para1:Psqlite_func):longint;cdecl;external External_library name 'sqlite_aggregate_count';
|
||||
function sqlite_set_authorizer(_para1:Psqlite; xAuth:sqlite_authorize_func ; pUserData:pointer):longint;cdecl;external External_library name 'sqlite_set_authorizer';
|
||||
function sqlite_trace(_para1:Psqlite; xTrace:sqlite_trace_func; _para3:pointer):pointer;cdecl;external External_library name 'sqlite_trace';
|
||||
function sqlite_compile(db:Psqlite; zSql:Pchar; pzTail:PPchar; ppVm:PPsqlite_vm; pzErrmsg:PPchar):longint;cdecl;external External_library name 'sqlite_compile';
|
||||
function sqlite_step(pVm:Psqlite_vm; pN:Plongint; pazValue:PPPchar; pazColName:PPPchar):longint;cdecl;external External_library name 'sqlite_step';
|
||||
function sqlite_finalize(_para1:Psqlite_vm; pzErrMsg:PPchar):longint;cdecl;external External_library name 'sqlite_finalize';
|
||||
|
||||
//Use functions instead of external variables to retrieve version and encoding info
|
||||
function sqlite_version: PChar external External_library name 'sqlite_libversion';
|
||||
function sqlite_encoding: PChar external External_library name 'sqlite_libencoding';
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
end.
|
||||
|
@ -13,29 +13,73 @@ interface
|
||||
Manual corrections made by Luiz Américo - 2005
|
||||
}
|
||||
|
||||
const
|
||||
External_library='sqlite3'; {Setup as you need}
|
||||
|
||||
Type
|
||||
PPPChar = ^PPChar;
|
||||
Plongint = ^longint;
|
||||
Psqlite3 = Pointer;
|
||||
PPSqlite3 = ^PSqlite3;
|
||||
Psqlite3_context = Pointer;
|
||||
Psqlite3_stmt = Pointer;
|
||||
PPsqlite3_stmt = ^Psqlite3_stmt;
|
||||
Psqlite3_value = Pointer;
|
||||
PPsqlite3_value = ^Psqlite3_value;
|
||||
|
||||
{$IFDEF FPC}
|
||||
{$PACKRECORDS C}
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
External_library='sqlite3';
|
||||
|
||||
SQLITE_INTEGER = 1;
|
||||
SQLITE_FLOAT = 2;
|
||||
{ #define SQLITE_TEXT 3 // See below }
|
||||
SQLITE_BLOB = 4;
|
||||
SQLITE_NULL = 5;
|
||||
SQLITE_TEXT = 3;
|
||||
SQLITE3_TEXT = 3;
|
||||
SQLITE_UTF8 = 1;
|
||||
SQLITE_UTF16LE = 2;
|
||||
SQLITE_UTF16BE = 3;
|
||||
{ Use native byte order }
|
||||
SQLITE_UTF16 = 4;
|
||||
{ sqlite3_create_function only }
|
||||
SQLITE_ANY = 5;
|
||||
|
||||
//sqlite_exec return values
|
||||
SQLITE_OK = 0;
|
||||
SQLITE_ERROR = 1;{ SQL error or missing database }
|
||||
SQLITE_INTERNAL = 2;{ An 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; { (Internal Only) 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; { Database lock protocol error }
|
||||
SQLITE_EMPTY = 16; { Database is empty }
|
||||
SQLITE_SCHEMA = 17; { The database schema changed }
|
||||
SQLITE_TOOBIG = 18; { Too much data for one row of a table }
|
||||
SQLITE_CONSTRAINT = 19; { Abort due to contraint 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 }
|
||||
|
||||
type
|
||||
sqlite_int64 = int64;
|
||||
sqlite_uint64 = qword;
|
||||
PPPChar = ^PPChar;
|
||||
Psqlite3 = Pointer;
|
||||
PPSqlite3 = ^PSqlite3;
|
||||
Psqlite3_context = Pointer;
|
||||
Psqlite3_stmt = Pointer;
|
||||
PPsqlite3_stmt = ^Psqlite3_stmt;
|
||||
Psqlite3_value = Pointer;
|
||||
PPsqlite3_value = ^Psqlite3_value;
|
||||
|
||||
//Callback function types
|
||||
//Notice that most functions were named using as prefix the function name that uses them,
|
||||
//rather than describing their functions
|
||||
|
||||
type
|
||||
sqlite3_callback = function (_para1:pointer; _para2:longint; _para3:PPchar; _para4:PPchar):longint;cdecl;
|
||||
busy_handler_func = function (_para1:pointer; _para2:longint):longint;cdecl;
|
||||
sqlite3_set_authorizer_func = function (_para1:pointer; _para2:longint; _para3:Pchar; _para4:Pchar; _para5:Pchar; _para6:Pchar):longint;cdecl;
|
||||
@ -50,96 +94,15 @@ type
|
||||
sqlite3_result_func = procedure (_para1:pointer);cdecl;
|
||||
sqlite3_create_collation_func = function (_para1:pointer; _para2:longint; _para3:pointer; _para4:longint; _para5:pointer):longint;cdecl;
|
||||
sqlite3_collation_needed_func = procedure (_para1:pointer; _para2:Psqlite3; eTextRep:longint; _para4:Pchar);cdecl;
|
||||
|
||||
|
||||
const
|
||||
SQLITE_VERSION = '3.2.1';
|
||||
SQLITE_VERSION_NUMBER = 3002001;
|
||||
|
||||
|
||||
SQLITE_INTEGER = 1;
|
||||
SQLITE_FLOAT = 2;
|
||||
{ #define SQLITE_TEXT 3 // See below }
|
||||
SQLITE_BLOB = 4;
|
||||
SQLITE_NULL = 5;
|
||||
|
||||
SQLITE_TEXT = 3;
|
||||
|
||||
SQLITE3_TEXT = 3;
|
||||
|
||||
SQLITE_UTF8 = 1;
|
||||
SQLITE_UTF16LE = 2;
|
||||
SQLITE_UTF16BE = 3;
|
||||
{ Use native byte order }
|
||||
SQLITE_UTF16 = 4;
|
||||
{ sqlite3_create_function only }
|
||||
SQLITE_ANY = 5;
|
||||
|
||||
|
||||
{$ifndef win32}
|
||||
var
|
||||
sqlite3_version : Pchar;cvar;external;
|
||||
//This is not working under windows. Any clues?
|
||||
sqlite3_temp_directory : Pchar;cvar;external;
|
||||
|
||||
|
||||
function sqlite3_libversion:PChar;cdecl;external External_library name 'sqlite3_libversion';
|
||||
//function sqlite3_libversion_number:longint;cdecl;external External_library name 'sqlite3_libversion_number';
|
||||
|
||||
type
|
||||
sqlite_int64 = int64;
|
||||
sqlite_uint64 = qword;
|
||||
{$endif}
|
||||
|
||||
function sqlite3_close(_para1:Psqlite3):longint;cdecl;external External_library name 'sqlite3_close';
|
||||
|
||||
function sqlite3_exec(_para1:Psqlite3; sql:Pchar; _para3:sqlite3_callback; _para4:pointer; errmsg:PPchar):longint;cdecl;external External_library name 'sqlite3_exec';
|
||||
|
||||
const
|
||||
SQLITE_OK = 0; { SQL error or missing database }
|
||||
SQLITE_ERROR = 1;{ An internal logic error in SQLite }
|
||||
SQLITE_INTERNAL = 2;{ Access permission denied }
|
||||
SQLITE_PERM = 3; { Callback routine requested an abort }
|
||||
SQLITE_ABORT = 4; { The database file is locked }
|
||||
SQLITE_BUSY = 5; { A table in the database is locked }
|
||||
SQLITE_LOCKED = 6;{ A malloc() failed }
|
||||
SQLITE_NOMEM = 7; { Attempt to write a readonly database }
|
||||
SQLITE_READONLY = 8;{ Operation terminated by sqlite3_interrupt() }
|
||||
SQLITE_INTERRUPT = 9;{ Some kind of disk I/O error occurred }
|
||||
SQLITE_IOERR = 10; { The database disk image is malformed }
|
||||
SQLITE_CORRUPT = 11;
|
||||
{ (Internal Only) Table or record not found }
|
||||
SQLITE_NOTFOUND = 12;
|
||||
{ Insertion failed because database is full }
|
||||
SQLITE_FULL = 13;
|
||||
{ Unable to open the database file }
|
||||
SQLITE_CANTOPEN = 14;
|
||||
{ Database lock protocol error }
|
||||
SQLITE_PROTOCOL = 15;
|
||||
{ Database is empty }
|
||||
SQLITE_EMPTY = 16;
|
||||
{ The database schema changed }
|
||||
SQLITE_SCHEMA = 17;
|
||||
{ Too much data for one row of a table }
|
||||
SQLITE_TOOBIG = 18;
|
||||
{ Abort due to contraint violation }
|
||||
SQLITE_CONSTRAINT = 19;
|
||||
{ Data type mismatch }
|
||||
SQLITE_MISMATCH = 20;
|
||||
{ Library used incorrectly }
|
||||
SQLITE_MISUSE = 21;
|
||||
{ Uses OS features not supported on host }
|
||||
SQLITE_NOLFS = 22;
|
||||
{ Authorization denied }
|
||||
SQLITE_AUTH = 23;
|
||||
{ Auxiliary database format error }
|
||||
SQLITE_FORMAT = 24;
|
||||
{ 2nd parameter to sqlite3_bind out of range }
|
||||
SQLITE_RANGE = 25;
|
||||
{ File opened that is not a database file }
|
||||
SQLITE_NOTADB = 26;
|
||||
{ sqlite3_step() has another row ready }
|
||||
SQLITE_ROW = 100;
|
||||
{ sqlite3_step() has finished executing }
|
||||
SQLITE_DONE = 101;
|
||||
|
||||
function sqlite3_last_insert_rowid(_para1:Psqlite3):sqlite_int64;cdecl;external External_library name 'sqlite3_last_insert_rowid';
|
||||
function sqlite3_changes(_para1:Psqlite3):longint;cdecl;external External_library name 'sqlite3_changes';
|
||||
function sqlite3_total_changes(_para1:Psqlite3):longint;cdecl;external External_library name 'sqlite3_total_changes';
|
||||
@ -162,7 +125,6 @@ function sqlite3_snprintf(_para1:longint; _para2:Pchar; _para3:Pchar):Pchar;cdec
|
||||
|
||||
function sqlite3_set_authorizer(_para1:Psqlite3; xAuth:sqlite3_set_authorizer_func; pUserData:pointer):longint;cdecl;external External_library name 'sqlite3_set_authorizer';
|
||||
|
||||
|
||||
const
|
||||
SQLITE_COPY = 0;
|
||||
{ Index Name Table Name }
|
||||
@ -222,9 +184,9 @@ const
|
||||
|
||||
{ #define SQLITE_OK 0 // Allow access (This is actually defined above) }
|
||||
{ Abort the SQL statement with an error }
|
||||
SQLITE_DENY = 1;
|
||||
SQLITE_DENY = 1;
|
||||
{ Don't allow access, but don't generate an error }
|
||||
SQLITE_IGNORE = 2;
|
||||
SQLITE_IGNORE = 2;
|
||||
|
||||
function sqlite3_trace(_para1:Psqlite3; xTrace:sqlite3_trace_func; _para3:pointer):pointer;cdecl;external External_library name 'sqlite3_trace';
|
||||
procedure sqlite3_progress_handler(_para1:Psqlite3; _para2:longint; _para3:sqlite3_progress_handler_func; _para4:pointer);cdecl;external External_library name 'sqlite3_progress_handler';
|
||||
@ -318,19 +280,19 @@ function sqlite3_create_collation16(_para1:Psqlite3; zName:Pchar; eTextRep:longi
|
||||
|
||||
function sqlite3_collation_needed(_para1:Psqlite3; _para2:pointer; _para3:sqlite3_collation_needed_func):longint;cdecl;external External_library name 'sqlite3_collation_needed';
|
||||
function sqlite3_collation_needed16(_para1:Psqlite3; _para2:pointer; _para3:sqlite3_collation_needed_func):longint;cdecl;external External_library name 'sqlite3_collation_needed16';
|
||||
|
||||
//function sqlite3_key(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl;external External_library name 'sqlite3_key';
|
||||
|
||||
//function sqlite3_rekey(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl;external External_library name 'sqlite3_rekey';
|
||||
|
||||
//function sqlite3_sleep(_para1:longint):longint;cdecl;external External_library name 'sqlite3_sleep';
|
||||
|
||||
//function sqlite3_expired(_para1:Psqlite3_stmt):longint;cdecl;external External_library name 'sqlite3_expired';
|
||||
|
||||
//function sqlite3_global_recover:longint;cdecl;external External_library name 'sqlite3_global_recover';
|
||||
|
||||
function sqlite3_libversion:PChar;cdecl;external External_library name 'sqlite3_libversion';
|
||||
//Alias for allowing better code portability (win32 is not working with external variables)
|
||||
function sqlite3_version:PChar;cdecl;external External_library name 'sqlite3_libversion';
|
||||
|
||||
// Not published functions
|
||||
//function sqlite3_libversion_number:longint;cdecl;external External_library name 'sqlite3_libversion_number';
|
||||
//function sqlite3_key(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl;external External_library name 'sqlite3_key';
|
||||
//function sqlite3_rekey(db:Psqlite3; pKey:pointer; nKey:longint):longint;cdecl;external External_library name 'sqlite3_rekey';
|
||||
//function sqlite3_sleep(_para1:longint):longint;cdecl;external External_library name 'sqlite3_sleep';
|
||||
//function sqlite3_expired(_para1:Psqlite3_stmt):longint;cdecl;external External_library name 'sqlite3_expired';
|
||||
//function sqlite3_global_recover:longint;cdecl;external External_library name 'sqlite3_global_recover';
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user