Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged SQLiteCpp at Robotics Stack Exchange
Package Summary
| Version | 4.0.0 |
| License | MIT |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/srombauts/sqlitecpp.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-10-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Sébastien Rombauts
Authors
- Sébastien Rombauts
SQLiteC++
SQLiteC++ (SQLiteCpp) is a lean and easy to use C++ SQLite3 wrapper.
Supported release lines
-
SQLiteCpp 4.x (
master) is the actively developed line. It requires C++17 and SQLite 3.38.0 or newer, and may introduce API/ABI-breaking changes. -
SQLiteCpp 3.x (
sqlitecpp-3.x) is the C++11-compatible maintenance line, starting from release 3.4.0. It keeps the SQLite 3.8.7 minimum and focuses on compatible bug fixes and backports without adopting the breaking changes of 4.x. The core library supports C++11; some optional headers use C++14.
The older sqlitecpp-3.4.x
branch remains available for the 3.4.x series; ongoing C++11 maintenance targets sqlitecpp-3.x.
About SQLiteC++:
SQLiteC++ offers an encapsulation around the native C APIs of SQLite, with a few intuitive and well documented C++ classes.
License:
Copyright (c) 2012-2026 Sébastien Rombauts (sebastien.rombauts@gmail.com)
Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt or copy at http://opensource.org/licenses/MIT)
Note on redistribution of SQLite source files
As stated by the MIT License, you are welcome to reuse, modify, and redistribute the SQLiteCpp source code the way you want it to, be it a git submodule, a subdirectory, or a selection of some source files.
I would love a mention in your README, a web link to the SQLite repository, and a mention of the author, but none of those are mandatory.
About SQLite underlying library:
SQLite is a library that implements a serverless transactional SQL database engine. It is the most widely deployed SQL database engine in the world. All of the code and documentation in SQLite has been dedicated to the public domain by the authors. http://www.sqlite.org/about.html
The goals of SQLiteC++ are:
- to offer the best of the existing simple C++ SQLite wrappers
- to be elegantly written with modern C++17 design, STL, exceptions and RAII idiom
- to keep dependencies to a minimum (C++17 STL and SQLite3)
- to be portable
-
to be light and fast
- to be thread-safe only as much as SQLite “Multi-thread” mode (see below)
- to have a good unit test coverage
- to use API names sticking with those of the SQLite library
- to be well documented with Doxygen tags, and with some good examples
- to be well maintained
- to use a permissive MIT license, similar to BSD or Boost, for proprietary/commercial usage
It is designed using the Resource Acquisition Is Initialization (RAII) idiom (see http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization), and throwing exceptions in case of SQLite errors (except in destructors, where assert() are used instead). Each SQLiteC++ object must be constructed with a valid SQLite database connection, and then is always valid until destroyed.
Supported platforms:
The platform and compiler requirements below describe master (SQLiteCpp 4.x).
The continuous integration builds and tests on:
- Ubuntu 22.04 and 24.04, plus the current Ubuntu GitHub Actions runner
- the current Windows GitHub Actions runner, plus Visual Studio 2022 Release builds for Win32/x86 with shared and static libraries
- the minimum MSVC toolset, VS2017 15.9 / v141, installed on the Windows 2022 runner
- the current macOS GitHub Actions runner
The build matrices cover GCC, Clang, AppleClang, MinGW, and MSVC. The library requires C++17, and the CMake compatibility workflow also exercises C++20.
Dependencies
- CMake 3.16 or newer when using the CMake build
- a C++17-capable compiler and standard library
- Visual Studio 2017 15.9 (MSVC 19.16 / v141 toolset 14.16) or newer when using MSVC
- exception support (the class Exception inherits from std::runtime_error)
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- Update bundled SQLite from 3.53.4 to 3.54.1 (2026-10-16) (#597)
- Require SQLite 3.38.0 or newer (#596)
- Require C++17 and CMake 3.16 or newer (#580)
- Adopt CMake 4.4 policies and test them (#581)
- Bump the shared-library ABI version from 0 to 1 for SQLiteCpp 4.0
- Use fixed-width integer types in
SQLite::Header, making field widths consistent across platforms (ABI change) (#582) - Update googletest to v1.18.0 (#583)
- Improve tests for
Savepoint::rollbackTo()and scope-exit rollback semantics (#584) - Fix link errors in supplied assertion handlers and add handler-enabled CI coverage (#587)
- Make column type constants usable in constant expressions (ABI change) (#609)
- Restrict CMake package compatibility to the same major version (#610)
- Preserve SQL NULL as nullptr in implicit
const char*conversions; usegetText()for the old fallback (#612) - Clarify nullable text examples and borrowed result lifetimes (#613)
Removed
- Remove the deprecated
Savepoint::rollback()alias; userollbackTo()instead (#585) - Remove redundant C++11/C++14/C++17 compatibility guards (#589)
Fixed
- Fix Meson builds with a custom assertion handler (#590)
- Instrument unit tests and examples in UBSan builds (#593)
- Fix column metadata API visibility for Meson consumers (#595)
- Fix keyless database readability detection and add
hasSQLiteHeader()(#608) - Refresh cached result-column metadata after SQLite reprepares a statement (#598)
Added
- Add source table-name accessors to Statement and Column (#594)
- Add
std::string_viewbinding and column access, with tests and documentation (#518) (#607)
[3.4.0] - 2026-09-21
Added
- Add a
SQLITECPP_installCMake option to make the install targets optional (#512) - Add AI coding guidelines for GitHub Copilot and Cursor (#529)
- Add agent skills for releases, SQLite updates, CHANGELOG maintenance, and authoring (#546)
- Add a GitHub Actions workflow computing unit test & example code coverage (GCov) and publishing it to Coveralls (#549)
- Add unit tests covering error and edge-case paths to raise code coverage (#551)
- Add Statement::RowIterator to support range-based for loops over query results (#545, fixes #181)
- Add 64-bit BLOB binding methods (#564)
- Add ASan, UBSan, and cppcheck quality gates (#568)
- Add CodeQL security and quality analysis (#569)
- Allow Database encryption keys to be supplied as binary buffers (#571)
- Add C++11 & C++17 standard tests (#574)
Changed
- Update SQLite from 3.49.2 to 3.53.4 (2026-07-24) (#526) (#538) (#548) (#561) (#566)
- Generalize the CMake SQLite and key API to ease use of SQLite3 Multiple Ciphers (#532)
- Set
cmake_minimum_requiredpolicy max to support CMake 4.0 (#519) - Update example2 to
cmake_minimum_required(VERSION 3.5...4.0)(committed directly to master) - Replace the monolithic Copilot instructions with granular agent skills and an AGENTS.md router (#531)
- Enforce LF line endings with .gitattributes and normalize tracked files (#550)
- Restore the Coverity Scan static analysis as a GitHub Actions workflow, replacing the old Travis CI job (#557)
- Limit AppVeyor to Visual Studio 2022 and 2019 Release builds on master and pull requests (#565)
- Refresh the README CI badges (#570)
- Update copyright years to 2026 across project files (#578)
Removed
- Remove obsolete Travis CI configuration and active references (#572)
- Remove AppVeyor and retain Visual Studio 2022 Release Win32/x86 coverage in GitHub Actions (#573)
Fixed
- Fix a faulty
#undefof the experimental filesystem feature macro (#509) - Fix compilation with newer GoogleTest (#514)
- Fix the MinGW build by conditionally linking libssp (#527)
- Fix Windows MSVC CI by switching the windows-latest generator to Visual Studio 18 2026 (#547)
- Guard against null C pointers in Exception, Database, and Statement to avoid undefined behavior (#552)
- Fix Database::isUnencrypted() to compare the full 16-byte header in binary mode (#553)
- Fix execute_many() to clear stale bindings between parameter sets (#554)
- Fix Column::operator« to stream the exact column bytes via getString() (#556)
- Fix Database::getHeaderInfo() signed-shift UB and use fixed-width types for the Header struct (#558)
- Restore SQLite::Header 3.x ABI compatibility while keeping fixed-width header parsing (#575)
- Fix Savepoint destructor to catch all exceptions to avoid std::terminate (#559)
- Restore SQLite::Savepoint 3.x ABI compatibility while retaining destructor exception safety (#576)
- Fix Transaction destructor to catch all exceptions to avoid std::terminate (#559)
- Fix the Meson build when the SQLITECPP_DISABLE_STD_FILESYSTEM option is enabled (#560)
- Add unit tests for Statement::RowIterator to fix coverage regression (#562)
- Fix large
std::stringbinding sizes (#563) - Fix GCov linking in shared-library builds (#567)
[3.3.3] - 2025-05-20
Added
File truncated at 100 lines see the full file