Home arrow Practices arrow Page 4 - Database Independent Development in C

An Example - Practices

The libdbi library provides a feature for C programmers that has long been missing. The interface is clean and the framework for adding new drivers is relatively straightforward.

  1. Database Independent Development in C
  2. Making the Connection
  3. Getting Results
  4. An Example
  5. Extending libdbi
By: Clay Dowling
Rating: starstarstarstarstar / 12
September 27, 2004

print this article



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.

>>> More Practices Articles          >>> More By Clay Dowling

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort


- Calculating Development Project Costs
- More Techniques for Finding Things
- Finding Things
- Finishing the System`s Outlines
- The System in So Many Words
- Basic Data Types and Calculations
- What`s the Address? Pointers
- Design with ArgoUML
- Pragmatic Guidelines: Diagrams That Work
- Five-Step UML: OOAD for Short Attention Span...
- Five-Step UML: OOAD for Short Attention Span...
- Introducing UML: Object-Oriented Analysis an...
- Class and Object Diagrams
- Class Relationships
- Classes

Developer Shed Affiliates


Dev Shed Tutorial Topics: