<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Generic Example Program</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Database Independent Abstraction Layer for C" HREF="index.html"><LINK REL="UP" TITLE="libdbi in a Nutshell (Quickstart Guide)" HREF="quickstart.html"><LINK REL="PREVIOUS" TITLE="Quick Overview" HREF="quickstart-debriefing.html"><LINK REL="NEXT" TITLE="Loading libdbi at runtime" HREF="loadinglibdbi.html"></HEAD ><BODY CLASS="SECTION" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Database Independent Abstraction Layer for C: libdbi Programmer's Guide</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="quickstart-debriefing.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Chapter 3. libdbi in a Nutshell (Quickstart Guide)</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="loadinglibdbi.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="QUICKSTART-CODE" >3.2. Generic Example Program</A ></H1 ><P >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 <TT CLASS="FILENAME" >tests/test_dbi.c</TT > in the <A HREF="http://libdbi-drivers.sourceforge.net" TARGET="_top" >libdbi-drivers</A > source tarball.</P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="PROGRAMLISTING" >#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; }</PRE ></FONT ></TD ></TR ></TABLE ><P >Compile with: gcc -lm -ldl -ldbi -o foo foo.c</P ><DIV CLASS="NOTE" ><BLOCKQUOTE CLASS="NOTE" ><P ><B >Note: </B >The <CODE CLASS="OPTION" >-ldl</CODE > option is not required on systems that implement the dynamic linking in their libc (like FreeBSD). You may also have to throw in something like <CODE CLASS="OPTION" >-I/usr/local/include</CODE > and <CODE CLASS="OPTION" >-L/usr/local/lib</CODE > to help gcc and ld find the libdbi headers and libraries.</P ></BLOCKQUOTE ></DIV ><P >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.</P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="quickstart-debriefing.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="loadinglibdbi.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Quick Overview</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="quickstart.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Loading libdbi at runtime</TD ></TR ></TABLE ></DIV ></BODY ></HTML >