Issue #12: Implement TDBConnection.GetTableColumns and .GetTableKeys (todo: .GetTableForeignKeys), as a replacement for the error prone ParseTableStructure. SQLite columns and keys should be parsed correctly now, MS SQL and PostgreSQL may now have some glitches to fix.

This commit is contained in:
Ansgar Becker
2020-01-08 15:28:36 +01:00
parent 0d0c6df599
commit b45a0d57c7
7 changed files with 430 additions and 114 deletions

View File

@ -332,7 +332,9 @@ begin
else
SynMemoPartitions.Clear;
DBObject.Connection.ParseTableStructure(DBObject.CreateCode, FColumns, FKeys, FForeignKeys);
FColumns := DBObject.TableColumns;
FKeys := DBObject.TableKeys;
FForeignKeys := DBObject.TableForeignKeys;
end;
listColumns.RootNodeCount := FColumns.Count;
DeInitializeVTNodes(listColumns);
@ -2374,7 +2376,7 @@ var
Key, OtherKey: TForeignKey;
i, j, k: Integer;
NameInUse: Boolean;
RefCreateCode, RefDatabase, RefTable: String;
RefDatabase, RefTable: String;
KeyColumnsSQLCode, RefColumnsSQLCode: String;
Err: String;
RefColumns: TTableColumnList;
@ -2429,9 +2431,7 @@ begin
RefObj.Name := RefTable;
RefObj.Database := RefDatabase;
RefObj.NodeType := lntTable;
RefCreateCode := DBObject.Connection.GetCreateCode(RefObj);
RefColumns := TTableColumnList.Create(True);
DBObject.Connection.ParseTableStructure(RefCreateCode, RefColumns, nil, nil);
RefColumns := RefObj.TableColumns;
TypesMatch := True;
KeyColumnsSQLCode := '';
RefColumnsSQLCode := '';