Libgda still offers several methods to execute a statement, depending on the type of statement to execute (there is still of course the gda_connection_statement_execute() method which works for any type of statement), but the methods have been improved:
For SELECT statements, it is now possible to specify the way the resulting data model will be accessed (random access or using a cursor) which enables applications to better manage memory consumption.
For INSERT statements, it is possible to obtain a list of all the values inserted in the table (not only the columns for which a value was specified)
The execution of a SELECT statement returns a GdaDataSelect data model which can (after having provided some information) be modified using the traditional GdaDataModel's data modification methods (modifications are translated into INSERT, UPDATE or DELETE statements).