#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <qdb/qdb.h>
/**
* This sample program connects to the database and does one INSERT
* and one SELECT.
*
* The database name is assumed to be /dev/qdb/customerdb, with this schema:
* CREATE TABLE customers(
* customerid INTEGER PRIMARY KEY AUTOINCREMENT,
* firstname TEXT,
* lastname TEXT
* );
*/
int main(int argc, char **argv) {
int rc;
qdb_hdl_t *hdl;
qdb_result_t *res;
char *errmsg;
// Connect to the database
hdl = qdb_connect("/dev/qdb/customerdb", 0);
if (hdl == NULL){
fprintf(stderr, "Error connecting to database: %s\n",
strerror(errno));
return EXIT_FAILURE;
}
// INSERT a row into the database.
rc = qdb_statement(hdl,
"INSERT INTO customers(firstname, lastname) VALUES('Dan', 'Cardamore');");
if (rc == -1) {
errmsg = qdb_geterrmsg(hdl);
fprintf(stderr, "Error executing INSERT statement: %s\n",
errmsg);
return EXIT_FAILURE;
}
// SELECT one row from the database
// This statement combines the first and last names into full names.
rc = qdb_statement(hdl,
"SELECT firstname || ' ' || lastname AS fullname FROM customers
LIMIT 1;");
if (rc == -1) {
errmsg = qdb_geterrmsg(hdl);
fprintf(stderr, "Error executing SELECT statement: %s\n",
errmsg);
return EXIT_FAILURE;
}
// Get the result
res = qdb_getresult(hdl);
if (res == NULL) {
errmsg = qdb_geterrmsg(hdl);
fprintf(stderr, "Error getting result: %s\n",
errmsg);
return EXIT_FAILURE;
}
if (qdb_rows(res) == 1) {
printf("Got a customer's full name: %s\n",
(char *)qdb_cell(res, 0, 0));
}
else {
printf("No customers in the database!\n");
}
// Free the result
rc = qdb_freeresult(res);
if (rc == -1) {
fprintf(stderr, "Error freeing SQL statement results: %s\n",
strerror(errno));
return EXIT_FAILURE;
}
// Disconnect from the server
rc = qdb_disconnect(hdl);
if (rc == -1) {
fprintf(stderr, "Error disconnecting from database: %s\n",
strerror(errno));
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}