mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2026-03-13 09:24:25 +08:00
Issue #12: Proper implementation of TSQLiteQuery.ColIsPrimaryKeyPart()
This commit is contained in:
@@ -7137,8 +7137,26 @@ end;
|
||||
|
||||
|
||||
function TSQLiteQuery.ColIsPrimaryKeyPart(Column: Integer): Boolean;
|
||||
var
|
||||
MetaResult: Integer;
|
||||
TableNm, ColumnNm: String;
|
||||
DataType, CollSeq: PAnsiChar;
|
||||
NotNull, PrimaryKey, Autoinc: Integer;
|
||||
begin
|
||||
Result := False;
|
||||
TableNm := TableName(Column);
|
||||
ColumnNm := FColumnOrgNames[Column];
|
||||
if not TableNm.IsEmpty then begin
|
||||
MetaResult := FConnection.Lib.sqlite3_table_column_metadata(FConnection.FHandle,
|
||||
PAnsiChar(Utf8Encode(FConnection.Database)),
|
||||
PAnsiChar(Utf8Encode(TableNm)),
|
||||
PAnsiChar(Utf8Encode(ColumnNm)),
|
||||
DataType, CollSeq, NotNull, PrimaryKey, Autoinc
|
||||
);
|
||||
if MetaResult <> SQLITE_ERROR then begin
|
||||
Result := PrimaryKey.ToBoolean;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
@@ -536,6 +536,10 @@ const
|
||||
sqlite3_column_database_name: function(pStmt: Psqlite3_stmt; N: Integer): PAnsiChar; cdecl;
|
||||
sqlite3_column_table_name: function(pStmt: Psqlite3_stmt; N: Integer): PAnsiChar; cdecl;
|
||||
sqlite3_column_origin_name: function(pStmt: Psqlite3_stmt; N: Integer): PAnsiChar; cdecl;
|
||||
sqlite3_next_stmt: function(ppDb: Psqlite3; pStmt: Psqlite3_stmt): Psqlite3_stmt; cdecl;
|
||||
sqlite3_table_column_metadata: function(ppDb: Psqlite3;
|
||||
zDbName, zTableName, zColumnName: PAnsiChar;
|
||||
var pzDataType, pzCollSeq: PAnsiChar; var pNotNull, pPrimaryKey, pAutoinc: Integer
|
||||
): Integer; cdecl;
|
||||
private
|
||||
procedure AssignProcedures; override;
|
||||
@@ -7949,6 +7953,7 @@ begin
|
||||
AssignProc(@sqlite3_column_database_name, 'sqlite3_column_database_name');
|
||||
AssignProc(@sqlite3_column_table_name, 'sqlite3_column_table_name');
|
||||
AssignProc(@sqlite3_column_origin_name, 'sqlite3_column_origin_name');
|
||||
AssignProc(@sqlite3_next_stmt, 'sqlite3_next_stmt');
|
||||
AssignProc(@sqlite3_table_column_metadata, 'sqlite3_table_column_metadata');
|
||||
end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user