asgsqlite3.pas
来自「DELPHI 访问SQLITE3 数据库的VCL控件」· PAS 代码 · 共 1,276 行 · 第 1/5 页
PAS
1,276 行
property OnEditError;
property OnNewRecord;
property OnPostError;
end;
//============================================================================== TASQLite3Query
TASQLite3Query = class(TASQLite3BaseQuery)
private
FUpdateSQL: TASQLite3UpdateSQL;
FRawSQL: boolean;
procedure SetSQL(const Value: TStrings);
function GetSQL: TStrings;
procedure QueryChanged(Sender: TObject);
protected
procedure InternalOpen; override;
procedure InternalPost; override;
procedure InternalDelete; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure InternalClose; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
// property Params: TParams Read FParams Write SetParamsList Stored false;
procedure SQLiteMasterChanged; override;
published
property RawSQL: boolean read FRawSQL write FRawSQL;
property SQL: TStrings read GetSQL write SetSQL;
property UpdateSQL: TASQLite3UpdateSQL read FUpdateSQL write FUpdateSQL;
end;
//============================================================================== TASQLite3Table
TASQLite3Table = class(TASQLite3BaseQuery)
private
FTableName: string;
FOrderBy : string;
FPrimaryAutoInc: boolean;
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure InternalOpen; override;
procedure InternalPost; override;
procedure InternalDelete; override;
procedure SetFTableName(TableName : string);
procedure SetFOrderBy(OrderBy : string);
public
procedure SQLiteMasterChanged; override;
published
property TableName: string read FTableName write SetFTableName;
property PrimaryAutoInc: boolean read FPrimaryAutoInc write FPrimaryAutoInc;
property OrderBy : string read FOrderBy write SetFOrderBy;
end;
//============================================================================== TASQLite3BlobStream
TASQLite3BlobStream = class(TMemoryStream)
private
FField: TBlobField;
FDataSet: TASQLite3BaseQuery;
FMode: TBlobStreamMode;
FModified: Boolean;
FOpened: Boolean;
procedure LoadBlobData;
procedure SaveBlobData;
public
constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
destructor Destroy; override;
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
end;
implementation
uses
Math
{$IFDEF ASQLITE_D6PLUS}
, StrUtils
{$endif}
;
function systemNoCaseCompare(db : TASQLite3DB; s1Len : integer; s1 : PAnsiChar; s2Len : integer; s2 : PAnsiChar) : integer; cdecl;
begin
result := CompareText(s1, s2);
end;
function systemCompare(db : TASQLite3DB; s1Len : integer; s1 : PAnsiChar; s2Len : integer; s2 : PAnsiChar) : integer; cdecl;
begin
result := CompareStr(s1, s2);
end;
// GPA - Static Link Start
{$IFDEF SQLite_Static}
Var
__HandlerPtr:Pointer;
{$L 'OBJ\sqlite3_3_4.obj'}
{$L 'OBJ\_ftoul.OBJ'}
{$L 'OBJ\files.obj'}
{$L 'OBJ\strlen.obj'}
{$L 'OBJ\assert.obj'}
{$L 'OBJ\memcmp.obj'}
{$L 'OBJ\memcpy.obj'}
{$L 'OBJ\memset.obj'}
{$L 'OBJ\strcmp.obj'}
{$L 'OBJ\strcpy.obj'}
{$L 'OBJ\strcat.obj'}
{$L 'OBJ\strncmp.obj'}
{$L 'OBJ\strncpy.obj'}
{$L 'OBJ\strncat.obj'}
{$L 'OBJ\sprintf.obj'}
{$L 'OBJ\fprintf.obj'}
{$L 'OBJ\_ll.obj'}
{$L 'OBJ\ltoupper.obj'}
{$L 'OBJ\ltolower.obj'}
{$L 'OBJ\atol.obj'}
{$L 'OBJ\ftol.obj'}
{$L 'OBJ\longtoa.obj'}
{$L 'OBJ\hrdir_r.obj'}
{$L 'OBJ\gmtime.obj'}
{$L 'OBJ\tzdata.obj'}
{$L 'OBJ\initcvt.obj'}
{$L 'OBJ\streams.obj'}
{$L 'OBJ\scantod.obj'}
{$L 'OBJ\scanwtod.obj'}
{$L 'OBJ\allocbuf.obj'}
{$L 'OBJ\bigctype.obj'}
{$L 'OBJ\clocale.obj'}
{$L 'OBJ\clower.obj'}
{$L 'OBJ\cupper.obj'}
{$L 'OBJ\fflush.obj'}
{$L 'OBJ\fputn.obj'}
{$L 'OBJ\hrdir_s.obj'}
{$L 'OBJ\mbisspc.obj'}
{$L 'OBJ\mbsrchr.obj'}
{$L 'OBJ\realcvt.obj'}
{$L 'OBJ\realcvtw.obj'}
{$L 'OBJ\timefunc.obj'}
{$L 'OBJ\vprinter.obj'}
{$L 'OBJ\hugeval.obj'}
{$L 'OBJ\cvtfak.obj'}
{$L 'OBJ\getinfo.obj'}
{$L 'OBJ\qmul10.obj'}
{$L 'OBJ\fuildq.obj'}
{$L 'OBJ\_pow10.obj'}
{$L 'OBJ\ldtrunc.obj'}
{$L 'OBJ\cvtfakw.obj'}
{$L 'OBJ\wis.obj'}
{$L 'OBJ\xfflush.obj'}
{$L 'OBJ\flushout.obj'}
{$L 'OBJ\lputc.obj'}
{$L 'OBJ\hrdir_b.obj'}
{$L 'OBJ\realloc.obj'}
{$L 'OBJ\mbctype.obj'}
{$L 'OBJ\xcvt.obj'}
{$L 'OBJ\xcvtw.obj'}
{$L 'OBJ\wcscpy.obj'}
{$L 'OBJ\errno.obj'}
{$L 'OBJ\ctrl87.obj'}
{$L 'OBJ\timedata.obj'}
{$L 'OBJ\int64toa.obj'}
{$L 'OBJ\cvtentry.obj'}
{$L 'OBJ\mbyte1.obj'}
{$L 'OBJ\errormsg.obj'}
{$L 'OBJ\exit.obj'}
{$L 'OBJ\iswctype.obj'}
{$L 'OBJ\heap.obj'}
{$L 'OBJ\memmove.obj'}
{$L 'OBJ\fxam.obj'}
{$L 'OBJ\fuistq.obj'}
{$L 'OBJ\qdiv10.obj'}
{$L 'OBJ\wmemset.obj'}
{$L 'OBJ\wcslen.obj'}
{$L 'OBJ\_tzset.obj'}
{$L 'OBJ\deflt87.obj'}
{$L 'OBJ\mbschr.obj'}
{$L 'OBJ\mbsrchr.obj'}
{$L 'OBJ\ermsghlp.obj'}
{$L 'OBJ\patexit.obj'}
{$L 'OBJ\initexit.obj'}
{$L 'OBJ\virtmem.obj'}
{$L 'OBJ\tzset.obj'}
{$L 'OBJ\mbisdgt.obj'}
{$L 'OBJ\mbsnbcpy.obj'}
{$L 'OBJ\platform.obj'}
{$L 'OBJ\getenv.obj'}
{$L 'OBJ\mbisalp.obj'}
{$L 'OBJ\abort.obj'}
{$L 'OBJ\signal.obj'}
{$L 'OBJ\clear87.obj'}
{$L 'OBJ\abort.obj'}
{$L 'OBJ\handles.obj'}
{$L 'OBJ\_cfinfo.obj'}
{$L 'OBJ\__isatty.obj'}
{$L 'OBJ\handles.obj'} //duplicato NEEDED!!!!
{$L 'OBJ\perror.obj'}
{$L 'OBJ\fputs.obj'}
{$L 'OBJ\files2.obj'}
{$L 'OBJ\handles.obj'} //duplicato NEEDED !!!!!
{$L 'OBJ\ioerror.obj'}
{$L 'OBJ\__write.obj'}
{$L 'OBJ\_write.obj'}
{$L 'OBJ\__lseek.obj'}
{$L 'OBJ\ioerror.obj'}
{$L 'OBJ\perror.obj'} //duplicato NEEDED !!!!!!
{$L 'OBJ\setenvp.obj'}
{$L 'OBJ\calloc.obj'}
{$L 'OBJ\mbsnbcmp.obj'}
{$L 'OBJ\mbsnbicm.obj'}
{$L 'OBJ\is.obj'}
{$L 'OBJ\isctype.obj'}
{$L 'OBJ\bigctype.obj'}
{$L 'OBJ\globals.obj'}
{$L 'OBJ\hrdir_mf.obj'}
{$L 'OBJ\fpreset.obj'}
{$L 'OBJ\ta.obj'}
{$L 'OBJ\setexc.obj'}
{$L 'OBJ\defhandl.obj'}
function _wsprintfA:integer; external 'user32.dll' name 'wsprintfA';
procedure RtlUnwind; external 'NtDll.dll' name 'RtlUnwind';
function _sqlite3_open(dbname: PAnsiChar; var db: pointer): integer; cdecl; external;
function _sqlite3_close(db: pointer): integer; cdecl; external;
function _sqlite3_exec(DB: Pointer; SQLStatement: PAnsiChar; Callback: TSQLite3_Callback;
UserDate: Pointer; var ErrMsg: PAnsiChar): Integer; cdecl; external;
function _sqlite3_libversion: PAnsiChar; cdecl; external;
function _sqlite3_errmsg(db: pointer): PAnsiChar; cdecl; external;
function _sqlite3_get_table(db: Pointer; SQLStatement: PAnsiChar; var ResultPtr: Pointer;
var RowCount: cardinal; var ColCount: cardinal; var ErrMsg: PAnsiChar): integer; cdecl; external;
procedure _sqlite3_free_table(Table: PAnsiChar); cdecl; external;
procedure _sqlite3_free(P: PAnsiChar); cdecl; external;
function _sqlite3_complete(P: PAnsiChar): boolean; cdecl; external;
function _sqlite3_last_insert_rowid(db: Pointer): integer; cdecl; external;
procedure _sqlite3_interrupt(db: Pointer); cdecl; external;
procedure _sqlite3_busy_handler(db: Pointer; CallbackPtr: Pointer; Sender: TObject); cdecl; external;
procedure _sqlite3_busy_timeout(db: Pointer; TimeOut: integer); cdecl; external;
function _sqlite3_changes(db: Pointer): integer; cdecl; external;
function _sqlite3_prepare(db: Pointer; SQLStatement: PAnsiChar; nBytes: integer;
var hstatement: pointer; var Tail: PAnsiChar): integer; cdecl; external;
function _sqlite3_finalize(hstatement: pointer): integer; cdecl; external;
function _sqlite3_reset(hstatement: pointer): integer; cdecl; external;
function _sqlite3_step(hstatement: pointer): integer; cdecl; external;
function _sqlite3_column_blob(hstatement: pointer; iCol: integer): pointer; cdecl; external;
function _sqlite3_column_bytes(hstatement: pointer; iCol: integer): integer; cdecl; external;
function _sqlite3_column_count(hstatement: pointer): integer; cdecl; external;
function _sqlite3_column_decltype(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external;
function _sqlite3_column_double(hstatement: pointer; iCol: integer): double; cdecl; external;
function _sqlite3_column_int(hstatement: pointer; iCol: integer): integer; cdecl; external;
function _sqlite3_column_int64(hstatement: pointer; iCol: integer): int64; cdecl; external;
function _sqlite3_column_name(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external;
function _sqlite3_column_text(hstatement: pointer; iCol: integer): PAnsiChar; cdecl; external;
function _sqlite3_column_type(hstatement: poi
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?