Connection's features
the access to each type of DBMS is performed using a DBMS driver refered to as a provider which exists as a plugin
many DBMS supported, see the providers' status page
- possibility to declare data sources (DSN), per-user or system wide
- each connection can be opened using a defined data source or using a connection string
- transactions and save points supported on a per-connection basis, and transaction status tracked
- introspection to query actual supported features
- introspection to retreive information about the actual database (data types, functions, tables, ...)
DML queries and data sets
Libgda's features regarding Data Manipulation queries (SELECT, INSERT, UPDATE and DELETE) are:
- powerfull SQL analyser which:
- is able to delimiter individual SQL statements within a string containing several statements
for most queries can build a GdaQuery object where all the parts of the query are accessible for examination and modifications
- supports a generic way of specifying place holders (variables)
- support for specifying how a SELECT query's result set will be accessed (random access or cursor based for large data sets), this feature however is not yet implemented in providers
- the data set returned after the execution of a SELECT query is fully introspectable
- the execution of a non SELECT query returns information about the number of impacted rows
Libgda's data sets returned by the execution of a SELECT query is an instance of a generic concept of a GdaDataModel which is a collection of data organized in a 2D array where the data of each column is of the same type. Libgda provides several implementations of that interface to support:
- import from CSV or XML files
- temporary modifications proxy
- subset proxy
- modifyable data set from a SELECT query
DDL queries
Libgda's features regarding Data Definition queries (all the queries which are not DML queries) are:
- support to create and drop databases
- support to create, alter and drop tables
- support to create and drop indexes
each operation fully supports all the features of the actual DBMS being used
- extension to other kind of operation very easy becaused based on an XML specification
Note: the actual support depends on the implementation of each DBMS provider
Dictionary
Libgda implements a GdaDict dictionary object which exposes in a convenient way all the database structure:
- data types
- tables and view (and their fields)
- constraints
more to come
Specifically the dictionary can:
- be updated (synchronized) with the database to reflect database structure's changes
- be saved and loaded from a file
- signal any change made to its contents