Database Independent Development in C - An Example
(Page 4 of 5 )
This is a very simple utility that I created to query the user list for an application I've been working on. Most applications will be a little more complex.
#include <stdio.h> #include <dbi/dbi.h>
int main() {
dbi_conn db; dbi_result result;
unsigned long user_id; const char* name; const char* email; int drivercount;
drivercount = dbi_initialize("/usr/local/lib/dbd"); printf("Loaded %d drivers\n", drivercount); db = dbi_conn_new("mysql");
dbi_conn_set_option(db, "host", "localhost"); dbi_conn_set_option(db, "username", "user"); dbi_conn_set_option(db, "password", "secret"); dbi_conn_set_option(db, "dbname", "bigapp");
dbi_conn_connect(db); result = dbi_conn_query(db, "SELECT user_id, name, email FROM author"); while (dbi_result_next_row(result)) { user_id = dbi_result_get_ulong(result, "user_id"); name = dbi_result_get_string(result, "name"); email = dbi_result_get_string(result, "email"); printf("%2ld) %s <%s>\n", user_id, name, email); }
dbi_result_free(result); dbi_conn_close(db); dbi_shutdown();
return 0;
}
On my installation, providing that I called this userlist.c, my command line would look like this:
cc userlist.c -o userlist -I/usr/local/include -L/usr/local/lib -ldbi
As you can see, this program is blissfully short. It's so short in fact that it makes C a very good candidate for handling some of the routine daily reporting work that every IT department has to suffer through. Generate some HTML output instead of the plain text that I showed and you start to put out very nice looking nightly reports. In later articles I'll also discuss the use of libraries for generating PDF output. With that under your belt you'll have a reporting tool that can rival what commercial solutions can provide.
Next: Extending libdbi >>
More Practices Articles
More By Clay Dowling