From 9e44456f81da125375fe33d0840c921e50ff9f38 Mon Sep 17 00:00:00 2001 From: blikblum Date: Fri, 20 Nov 2009 00:52:26 +0000 Subject: [PATCH] * Implement LastInsertRowId git-svn-id: trunk@14220 - --- packages/fcl-db/src/sqlite/customsqliteds.pas | 2 ++ packages/fcl-db/src/sqlite/sqlite3ds.pas | 6 ++++++ packages/fcl-db/src/sqlite/sqliteds.pas | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/packages/fcl-db/src/sqlite/customsqliteds.pas b/packages/fcl-db/src/sqlite/customsqliteds.pas index b1a361f6d7..11debd1da6 100644 --- a/packages/fcl-db/src/sqlite/customsqliteds.pas +++ b/packages/fcl-db/src/sqlite/customsqliteds.pas @@ -150,6 +150,7 @@ type function SqliteExec(Sql: PChar; ACallback: TSqliteCdeclCallback; Data: Pointer): Integer; virtual; abstract; procedure InternalCloseHandle; virtual; abstract; function InternalGetHandle: Pointer; virtual; abstract; + function GetLastInsertRowId: Int64; virtual; abstract; procedure GetSqliteHandle; procedure BuildLinkedList; virtual; abstract; procedure FreeItem(AItem: PDataRecord); @@ -238,6 +239,7 @@ type property ExpectedUpdates: Integer write SetExpectedUpdates; property ExpectedDeletes: Integer write SetExpectedDeletes; property IndexFields[Value: Integer]: TField read GetIndexFields; + property LastInsertRowId: Int64 read GetLastInsertRowId; property RowsAffected: Integer read GetRowsAffected; property ReturnCode: Integer read FReturnCode; property SqliteHandle: Pointer read FSqliteHandle; diff --git a/packages/fcl-db/src/sqlite/sqlite3ds.pas b/packages/fcl-db/src/sqlite/sqlite3ds.pas index 8780b07411..9345b3e6dd 100644 --- a/packages/fcl-db/src/sqlite/sqlite3ds.pas +++ b/packages/fcl-db/src/sqlite/sqlite3ds.pas @@ -46,6 +46,7 @@ type TSqlite3Dataset = class(TCustomSqliteDataset) protected procedure BuildLinkedList; override; + function GetLastInsertRowId: Int64; override; function GetRowsAffected:Integer; override; procedure InternalCloseHandle; override; function InternalGetHandle: Pointer; override; @@ -322,6 +323,11 @@ begin FBeginItem^.Row[Counter] := nil; end; +function TSqlite3Dataset.GetLastInsertRowId: Int64; +begin + Result := sqlite3_last_insert_rowid(FSqliteHandle); +end; + function TSqlite3Dataset.ReturnString: String; begin Result := SqliteCode2Str(FReturnCode) + ' - ' + sqlite3_errmsg(FSqliteHandle); diff --git a/packages/fcl-db/src/sqlite/sqliteds.pas b/packages/fcl-db/src/sqlite/sqliteds.pas index 8f63c587a8..1f382ddbab 100644 --- a/packages/fcl-db/src/sqlite/sqliteds.pas +++ b/packages/fcl-db/src/sqlite/sqliteds.pas @@ -48,6 +48,7 @@ type function GetSqliteEncoding: String; protected procedure BuildLinkedList; override; + function GetLastInsertRowId: Int64; override; function GetRowsAffected:Integer; override; function InternalGetHandle: Pointer; override; procedure InternalCloseHandle; override; @@ -275,6 +276,11 @@ begin FBeginItem^.Row[Counter] := nil; end; +function TSqliteDataset.GetLastInsertRowId: Int64; +begin + Result := sqlite_last_insert_rowid(FSqliteHandle); +end; + function TSqliteDataset.ReturnString: String; begin case FReturnCode of