[fpc-pascal] Database Metadata proposal
LacaK
lacak at zoznam.sk
Tue Jun 3 07:46:15 CEST 2014
Michael Van Canneyt wrote / napísal(a):
>
>
> On Mon, 2 Jun 2014, LacaK wrote:
>
>> Daniel Gaspary wrote / napísal(a):
>>
>> On Mon, Jun 2, 2014 at 3:01 AM, LacaK <lacak at zoznam.sk> wrote:
>>
>>
>> IMO very similar result you can get also with existing
>> implementation, when
>> you use:
>>
>>
>> Yes, this is the way GetDBInfo do, but it's not public, and never
>> return schema.
>> Code which I have attached uses only public methods and returns
>> "metadata dataset" which has also schema_name column
>> (for SQLConnection which support schemas. I have used public method
>> SetSchemaInfo not GetDBInfo)
>>
>> What I did was to copy and modify this method.
>>
>> I have sent a patch: http://bugs.freepascal.org/view.php?id=26254
>>
>>
>> Yes I see it, but as I wrote your new method returns collection,
>> which you must process, which is more or less what you can do with
>> "metadata dataset"
>
> While this is correct, the collection approach is much easier to use:
> With the metadataset, you must know which fields exist and type them
> correctly: FieldByName('XYZ').AsString
>
> With collections, the IDE codetools will tell you what properties exist.
> That is a order of magnitude more comfortable and less error prone.
>
I still feel it a bit incompatible with existing interface.
If existing methods are not enough then we can return to already
discussed extension:
TSchemaOption = (soIncludeSchemaName, soSystemObjects, soQuoteNames);
TSchemaOptions = set of TSchemaOption;
and
TSQLConnection.GetTableNames(List: TStrings; SchemaName : String;
Options : TSchemaOptions);
or better "new":
TSQLConnection.GetObjectNames(List: TStrings; SchemaType: TSchemaType;
Options : TSchemaOptions);
Which IMO fits better in existing frame.
-Laco.
More information about the fpc-pascal
mailing list