SQLite C++ driver (SQLite API)
dmitigr::sqlixx - is a header-only C++ driver for SQLite.
To use this library, a compiler with C++17 support (such as GCC 7.5+) is required.
- easy to use, header-only library;
- almost no overhead compared to native C API;
- zero-based indices for both prepared statement parameters and result columns;
- easy to use extensible data type conversion system.
Copy the content of folder src into a folder under include path, for example,
/usr/local/include/dmitigr, then #include <dmitigr/sqlixx/sqlixx.hpp>.
#include <dmitigr/sqlixx/sqlixx.hpp> #include <iostream> int main() { namespace sqlixx = dmitigr::sqlixx; sqlixx::Connection c{"", SQLITE_OPEN_READWRITE | SQLITE_OPEN_MEMORY}; // Create the test table. c.execute( R"( create table if not exists tab( id integer primary key, cr real, ct text, cb blob) )" ); // Truncate the test table. c.execute("delete from tab"); // Populate the test table. auto s = c.prepare("insert into tab(id, cr, ct, cb) values(?, ?, ?, ?)"); c.execute("begin"); s.execute(0, 1.2, std::to_string(3), sqlixx::Blob{"four", 4}); s.execute(1, 2.3, std::string_view{"four", 4}, sqlixx::Blob{"five", 4}); s.execute(2, 3.4, sqlixx::Text_utf8{"five", 4}, sqlixx::Blob{"six", 3}); c.execute("end"); // Query the test table. c.execute([](const sqlixx::Statement& s) { const auto b = s.result<sqlixx::Blob>("cb"); const std::string_view cb{static_cast<const char*>(b.data()), b.size()}; const auto t1 = s.result<sqlixx::Text_utf8>("ct"); const auto t2 = s.result<std::string>("ct"); const auto t3 = s.result<std::string_view>("ct"); assert(!std::strcmp(t1.data(), t2.data()) && (t2 == t3)); std::cout << "id: " << s.result<int>("id") << "\n" << "cr: " << s.result<double>("cr") << "\n" << "ct: " << t3 << "\n" << "cb: " << cb << "\n"; }, "select * from tab where id >= ? and id < ?", 0, 3); }