SkillAgentSearch skills...

Smartsqlite

SmartSqlite is a C++11 wrapper around SQLite3.

Install / Use

/learn @kullo/Smartsqlite
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SmartSqlite

SmartSqlite is a C++11 wrapper around SQLite3. We call it "smart" because of the consistent use of smart pointers.

A copy of SQLite is shipped with this library, thanks Richard!

Build Status Build status

Get started

$ git clone --recursive https://github.com/kullo/smartsqlite.git
$ cmake .
$ make
$ ctest

Sample code:

#include <iostream>

#include <smartsqlite/connection.h>
#include <smartsqlite/row.h>

int main(int argc, char** argv)
{
    SmartSqlite::Connection conn(":memory:");
    conn.exec("CREATE TABLE temparatures "
              "(id INT, temperature FLOAT, city TEXT)");
    conn.exec("INSERT INTO temparatures "
              "VALUES (1, 2.1, 'Berlin')");
    conn.exec("INSERT INTO temparatures "
              "VALUES (2, 2.0, 'New York')");
    conn.exec("INSERT INTO temparatures "
              "VALUES (42, -1.8, 'Cape Town')");

    SmartSqlite::Statement stm = conn.prepare(
                "SELECT * FROM temparatures WHERE id >= :value");
    stm.bind(":value", 2);
    for (SmartSqlite::RowIterator itr = stm.begin(); itr != stm.end(); ++itr)
    {
        int id = itr->get<int>("id");
        float temparature = itr->get<float>("temperature");
        std::string city = itr->get<std::string>("city");
        std::cout << "(" << id << ") " << city << ": " << temparature << std::endl;
    }

    return 0;
}

Versions

SmartSqlite has a linear versioning and the API might break at any time.

Version | SQLite version | Changes in SmartSqlite ----------- | -------------- | ---------------------- v26 | 3.31.1 | resultToResultName: Add new extended result codes v25 | 3.29.0 | - v24 | 3.26.0 | resultToResultName: Add new extended result codes; Fix build breakage due to changed sqlite3BtreeBeginTrans interface v23 | 3.23.1 | resultToResultName: Add new extended result codes v22 | 3.21.0 | resultToResultName: Add new extended result codes v21 | 3.20.1 | tests: Fix temp file name generation for BotanSqlite3; Prevent using 64b filesystem API calls on Android v20 | 3.19.2 | Enable FTS5 (full-text search) v19 | 3.18.0 | - v18 | 3.17.0 | resultToResultName: Add missing result names v17 | 3.16.2 | - v16 | 3.15.1 | - v15 | 3.14.2 | - v14 | 3.14.1 | Rework botansqlite3 key handling v13 | 3.13.0 | Add a copy of botansqlite3 to the project v12 | 3.13.0 | Update build system: use libc++ with Linux+clang. Add sqlite3 shell binary to build. v11 | 3.13.0 | Add Connection::changes(); Add ScopedSavepoint v10 | 3.13.0 | Improve cmake configuration; Add OS X build to Travis v9 | 3.12.1 | NativeBinder: Correctly bind empty strings and blobs; NativeBinder: Copy pointer instead of referencing it in bindBlob(); Add SQL statement text to some exception messages v8 | 3.12.0 | – v7 | 3.11.1 | – v6 | 3.11.0 | Fix possible nullptr dereference in Blob v5 | 3.10.2 | – v4 | 3.9.2 | Update implementation of Connection v3 | 3.9.2 | Add version() and versionCode(); Rename checkVersion() to checkSqliteVersion() v2 | 3.9.2 | Replace factory functions makeConnection*() with string constructor v1 | 3.9.2 | Initial version

Compiler support

  • GCC 4.8+
  • Clang 3.4+
  • MSVC 2015+

Contibutions

Contibutions respecting the library's license are highly welcome via Github issues and pull requests.

Users

This library is used by:

  • Kullo (Windows, Linux, OS X, Android and iOS)

Please add yourself to the list using PRs.

License

SmartSqlite is licensed under the 3-clause BSD license. See LICENSE.txt for details. The encryption module botansqlite3 is licensed under the Botan license, a 2-clause BSD license (see src/botansqlite3/LICENSE.txt). The SQLite3 shell uses the Linenoise library for line editing. It is licensed under 2-clause BSD (see src/linenoise/LICENSE).

Related Skills

View on GitHub
GitHub Stars6
CategoryData
Updated7mo ago
Forks1

Languages

C

Security Score

82/100

Audited on Aug 18, 2025

No findings