This example shows how you might obtain a list of the available data types supported by a database system, from a Dict object.
File: main.cc
#include <libgnomedbmm.h> #include <libgdamm.h> #include <iostream> #ifdef GLIBMM_EXCEPTIONS_ENABLED Glib::RefPtr<Gnome::Gda::Dict> create_dict() #else Glib::RefPtr<Gnome::Gda::Dict> create_dict(std::auto_ptr<Glib::Error>& error) #endif { Glib::RefPtr<Gnome::Gda::Dict> dict = Gnome::Gda::Dict::create(); Glib::RefPtr<Gnome::Gda::Client> client = Gnome::Gda::Client::create(); Glib::ustring connection_string = "DB_DIR=" LIBGNOMEDB_DATADIR ";DB_NAME=demo_db"; #ifdef GLIBMM_EXCEPTIONS_ENABLED Glib::RefPtr<Gnome::Gda::Connection> cnc = client->open_connection_from_string("SQLite", connection_string, "" /* username */, "" /* password */); dict->set_connection(cnc); dict->update_dbms_meta_data(); #else Glib::RefPtr<Gnome::Gda::Connection> cnc = client->open_connection_from_string("SQLite", connection_string, "" /* username */, "" /* password */, Gnome::Gda::ConnectionOptions(0), error); if(error.get() == NULL) { dict->set_connection(cnc); dict->update_dbms_meta_data(error); } #endif return dict; } int main(int argc, char* argv[]) { Gnome::Db::init("Dicttypes example", "1.0", argc, argv); Glib::RefPtr<Gnome::Gda::Dict> dict; #ifdef GLIBMM_EXCEPTIONS_ENABLED try { dict = create_dict(); } catch(const Glib::Error& err) { std::cerr << "Exception caught: " << err.what() << std::endl; return 1; } #else std::auto_ptr<Glib::Error> error; dict = create_dict(error); if(error.get() != NULL) { std::cerr << "Exception caught: " << error->what() << std::endl; return 1; } #endif // GLIBMM_EXCEPTIONS_ENABLED typedef std::vector<Glib::RefPtr<Gnome::Gda::DictType> > DictTypeVector; DictTypeVector types = dict->get_dict_types(); for(DictTypeVector::iterator iter = types.begin(); iter != types.end(); ++ iter) { std::cout << g_type_name((*iter)->get_g_type()) << std::endl; } return 0; }