GitHub - abc100m/libzdbcpp: libzdb c++ 11 wrapper
###Introduction libzdb
Libzdb is a database library with thread-safe connection pooling. The
library can connect transparently to multiple database systems. It has
zero runtime configuration and connection is specified via a URL scheme.
web site:
http://www.tildeslash.com/libzdb/
https://bitbucket.org/tildeslash/libzdb
###Introduction libzdbcpp
Libzdbcpp is c++ 11 wrapper class for libzdb.
###how to use libzdbcpp? after build libzdb, copy zdbcpp.h to the installed dir.
#include <zdbcpp.h> using namespace zdbcpp;
###demo code
- fetch a query
ConnectionPool pool("mysql://192.168.11.100:3306/test?user=root&password=dba"); pool.start(); Connection con = pool.getConnection(); //we can set default prefetch to Connection //con.setDefaultRowPrefetch(100); //here, use c++ 11 variadic templates feature to bind parameter ResultSet rset = con.executeQuery("select id, name, percent, image from zild_t where id < ? order by id;", 100); //row prefetch rset.setFetchSize(100); while (rset.next()) { int id = rset.getIntByName("id"); const char *name = rset.getString(2); double percent = rset.getDoubleByName("percent"); const char *blob = (char*)rset.getBlob(4, &imagesize); printf("\t%-5d%-16s%-10.2f%-16.38s\n", id, name ? name : "null", percent, imagesize ? blob : ""); }
- insert data
char *data[]= {"Fry", "Leela", "Bender", "Farnsworth", "Zoidberg", "Amy", "Hermes", "Nibbler", "Cubert", "Zapp", "Joey Mousepad", "§Á¦²?", 0}; ConnectionPool pool("mysql://192.168.11.100:3306/test?user=root&password=dba"); pool.start(); Connection con = pool.getConnection(); con.beginTransaction(); /* Insert values into database and assume that auto increment of id works */ long long affected_rows = 0; for (int i = 0; data[i]; i++) con.execute("insert into zild_t (name, percent) values(?, ?);", data[i], i + 1 ); con.commit();
- Prepared Statement
char *images[]= {"Ceci n'est pas une pipe", "Mona Lisa", "Bryllup i Hardanger", "The Scream", "Vampyre", "Balcony", "Cycle", "Day & Night", "Hand with Reflecting Sphere", "Drawing Hands", "Ascending and Descending", 0}; ConnectionPool pool("mysql://192.168.11.100:3306/test?user=root&password=dba"); pool.start(); Connection con = pool.getConnection(); PreparedStatement pre = con.prepareStatement("update zild_t set image=? where id=?;"); for (int i = 0; images[i]; i++) { pre.setBlob(1, images[i], (int)strlen(images[i]) + 1); pre.setInt(2, i + 1); pre.execute(); }
- exception handling
try { con = pool.getConnection(); con.executeQuery("blablabala;"); } catch (sql_exception& e) { printf(e.what()); }
for more document, please visit:
http://www.tildeslash.com/libzdb/#api
https://github.com/abc100m/libzdbcpp/blob/master/test_zdbcpp/test_zdbcpp.cpp