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
support for multi threading, with possibilities to wrap non thread safe database apecific native APIs into specific threads, rendering them thread safe
SELECT, 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
- specific API to create these queries without having to use any SQL at all (starting with the upcoming version 4.2)
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