| Database Independent Abstraction Layer for C: libdbi Programmer's Guide | ||
|---|---|---|
| Prev | Chapter 3. libdbi in a Nutshell (Quickstart Guide) | Next |
The following listing shows how to establish a connection to a MySQL database server and retrieve the results of a SQL query. Only a small number of functions offered by libdbi are shown here. For a more extensive example check out the test program tests/test_dbi.c in the libdbi-drivers source tarball.
#include <stdio.h>
#include <dbi/dbi.h>
int main() {
dbi_conn conn;
dbi_result result;
dbi_inst instance;
double threshold = 4.333333;
unsigned int idnumber;
const char *fullname;
dbi_initialize_r(NULL, &instance);
conn = dbi_conn_new_r("mysql", instance);
dbi_conn_set_option(conn, "host", "localhost");
dbi_conn_set_option(conn, "username", "your_name");
dbi_conn_set_option(conn, "password", "your_password");
dbi_conn_set_option(conn, "dbname", "your_dbname");
dbi_conn_set_option(conn, "encoding", "UTF-8");
if (dbi_conn_connect(conn) < 0) {
printf("Could not connect. Please check the option settings\n");
}
else {
result = dbi_conn_queryf(conn, "SELECT id, name FROM coders "
"WHERE hours_of_sleep > %0.2f", threshold);
if (result) {
while (dbi_result_next_row(result)) {
idnumber = dbi_result_get_uint(result, "id");
fullname = dbi_result_get_string(result, "name");
printf("%i. %s\n", idnumber, fullname);
}
dbi_result_free(result);
}
dbi_conn_close(conn);
}
dbi_shutdown_r(instance);
return 0;
} |
Compile with: gcc -lm -ldl -ldbi -o foo foo.c
Note: The
-ldloption is not required on systems that implement the dynamic linking in their libc (like FreeBSD). You may also have to throw in something like-I/usr/local/includeand-L/usr/local/libto help gcc and ld find the libdbi headers and libraries.
Of course, a complete program should check for errors more thoroughly. This example keeps error-checking at a minimum for the sake of clarity. There are also other ways to retrieve data after a successful query. Keep reading on to see the rest.