Connection's features
access to each type of database is performed by a provider which exists as a plugin (similar to ODBC or JDBC's driver)
providers exist for several database types such as PostgreSQL, MySQL, or SQLite see the providers' status page for more detail
- opening connections can be done by defining data sources (DSN), per-user or system wide, or by using direct connection strings
- transactions and save points are supported on a per-connection basis (transaction status tracked for each connection)
- distributed transactions (transactions involving several connections) are supported
- provider's features can be queried at run time
SALES, INSERT, UPDATE and DELETE statements
Libgda's features regarding Data Manipulation queries (SELECT, INSERT, UPDATE and DELETE) are:
- powerfull SQL analyser which:
- can be customized by each database provider
- is able to delimiter individual SQL statements within a string containing several statements
- supports a generic (and database agnostic) 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)
- the data set returned after the execution of a SELECT statement may be modified (thus modifying the data in the database)
- the execution of a non SELECT query returns information about the number of impacted rows
Data definition statements
Libgda's features regarding Data Definition statements (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 meta data dictionary object which exposes in a convenient way all the database structure:
- data types
- tables and view (and their fields)
- constraints
- ...
Specifically the dictionary can:
- be updated (synchronized) with the database to reflect database structure's changes
- be extended with custom data
- be stored in the database it refers to or to an external file