Tntdb is a c++-class-library for easy access to databases

Related tags

Database tntdb
Overview
Tntdb
=====

Tntdb is a c++-class-library for easy access to databases. The interface is
database-independent. Driverclasses are loaded dynamically.

The goal is to have easy access to databases. You don't have to worry
about resourceleakage, because all objects you use directly are allocated on
the stack and deleted automatically, when going out of scope. The
interfaceobjects are wrappers to referencecounted instances, so you can copy
them around at your own will. Resources are freed, when the last object goes
out of scope.

Errorhandling is done exclusively with exceptionhandling. Just wrap your code
with a single try-catch and you have full errorhandling. All exceptions are 
derived from std::exception.

STL is used where possible and also STL-like and -compatible interfaces are
offered, where suitable.

Tntdb is targeted for application programming. It is not suitable for generic
databasetools. It does not offer e.g. schemaquery. You have to know, how your
tables look like. Thats true for normal applications.

You use SQL for databaseaccess. No wrapperclasses like active resultsets or
databound controls are offered. Instead you have best control over the
database. You can use every SQL-trick you know to get most out of your
database. Also this is a thin wrapper, so that you should have no big
performancepenalty compared to direct access to the C-API.

The project started already some years ago as a postgresql-wrapper. Later I
added a sqlite-3-wrapper.

The public headers include documentation, which can be generated using Doxygen.
Also there are some small examples in the demo-directory.

Installation
============

To install tntdb, you need cxxtools (http://www.tntnet.org/).

This version needs at least cxxtools version 1.4

You can find generic installation instructions in the file INSTALL.

To disable SQLite support (enabled by default) do
./configure --with-sqlite=no

To disable MySQL support (enabled by default) do
./configure --with-mysql=no

To disable Postgresql support (enabled by default) do
./configure --with-postgresql=no

To disable replication driver (enabled by default) do
./configure --with-replicate=no

To enable Oracle-support (disabled by default) do
./configure --with-oracle
Issues
  • Runtime error with g++10

    Runtime error with g++10

    In file tntdb/src/librarymanager.cpp I found out on my Debian 11 with g++10, that the following is not working anymore:


        std::string d = DRIVERDIR + cxxtools::Directory::sep() + libraryPrefix + driverName;
        log_debug("loading library \"" << d << '"');
        lib = cxxtools::Library(d);
    

    To get it work, I have changed the code to:

        std::string d(DRIVERDIR);
        d += cxxtools::Directory::sep() + libraryPrefix + driverName;
        log_debug("loading library \"" << d << '"');
        lib = cxxtools::Library(d);
    

    Best regards, Sven

    opened by sb-qt 1
  • Connection error

    Connection error

    Hello,

    We updated tntdb this morning with the latest version. Now we get the following error when connecting to postgresql :

    failed to load driver "tntdb5-postgresql"

    Jean-Marc.

    opened by jm130794 1
  • Forward declare class Cursor

    Forward declare class Cursor

    Class Cursor is referentiated as "friend" in the Statement class. Without the forward declaration of class Cursor, tntdb won't compile (AIX 6.1, xlC_r)

    opened by ghinadr 0
  • tntdb on Ubuntu on Windows 10: Erros with MySQL

    tntdb on Ubuntu on Windows 10: Erros with MySQL

    My installed versions: I have downloaded and installed the cxxtools-, tntnet- and tntdb-master.zip's this week on my client.

    My client: Bash on Ubuntu on Windows 10 (Creators update, 03-2017) gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 ldd (Ubuntu GLIBC 2.23-0ubuntu7) 2.23 For the "tntnet" command to be able to start I had to deactivate TCP_ACCEPT_DEFER (I commented the whole block in configure.ac).

    The "tntdb-test" command is working fine on my client with sqlite3 3.11.0

    But some of the asserts fail with my db server in my lan. Most are looking to be not important (testDouble, ininity, longval, ...). But there are two issues that are scaring me.

    My db server: Linux kernel 2.6.32 (Mips cpu) Debian 6.0.10 MySQL 5.1.73-1 (Debian)

    Issue 1: base::testTransaction: ASSERTION at base-test.cpp:371 not equal: value1 (count)= <3> value2 (2)= <2>

    Issue 2: types::testNull: OK types::testBool: EXCEPTION Mysql-Error 2014 in mysql_query: Commands out of sync; you can't run this command now types::testShort: EXCEPTION Mysql-Error 2014 in mysql_query: Commands out of sync; you can't run this command now types::testInt: EXCEPTION Mysql-Error 2014 in mysql_query: Commands out of sync; you can't run this command now types::testLong: EXCEPTION Mysql-Error 2014 in mysql_query: Commands out of sync; you can't run this command now types::testUnsignedShort: EXCEPTION Mysql-Error 2014 in mysql_query: Commands out of sync; you can't run this command now ... types::testBlob: OK types::testDate: OK

    opened by dev8765 3
  • Please release 1.4 or add pkg-config patch to 1.3

    Please release 1.4 or add pkg-config patch to 1.3

    Related to some issue in pulling automatically dependencies for a project (tntdb here), we still depend on 1.3 and fail due to the missing pkg-config support. Going with master produce compilation failure.

    Please release 1.4 or accept PR #10 for branch 1.3 (really needed on that branch) thx a lot and enjoy the end of the year celebrations

    opened by aquette 0
Owner
Tommi Mäkitalo
Tommi Mäkitalo
Verneuil is a VFS extension for SQLite that asynchronously replicates databases to S3-compatible blob stores.

Verneuil: streaming replication for sqlite Verneuil1 [vɛʁnœj] is a VFS (OS abstraction layer) for sqlite that accesses local database files like the d

Backtrace Labs 264 Jun 24, 2022
SOCI - The C++ Database Access Library

Originally, SOCI was developed by Maciej Sobczak at CERN as abstraction layer for Oracle, a Simple Oracle Call Interface. Later, several database backends have been developed for SOCI, thus the long name has lost its practicality. Currently, if you like, SOCI may stand for Simple Open (Database) Call Interface or something similar.

SOCI 1.1k Jun 25, 2022
ESE is an embedded / ISAM-based database engine, that provides rudimentary table and indexed access.

Extensible-Storage-Engine A Non-SQL Database Engine The Extensible Storage Engine (ESE) is one of those rare codebases having proven to have a more th

Microsoft 780 Jun 13, 2022
SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views)

SpDB is a data integration tool designed to organize scientific data from different sources under the same namespace according to a global schema and to provide access to them in a unified form (views). Its main purpose is to provide a unified data access interface for complex scientific computations in order to enable the interaction and integration between different programs and databases.

YU Zhi 0 Jun 22, 2022
A hook for Project Zomboid that intercepts files access for savegames and puts them in an SQLite DB instead.

ZomboidDB This project consists of a library and patcher that results in file calls for your savegame(s) being transparently intercepted and redirecte

Oliver 6 May 6, 2022
A lightweight header-only C++11 library for quick and easy SQL querying with QtSql classes.

EasyQtSql EasyQtSql is a lightweight header-only C++11 library for quick and easy SQL querying with QtSql classes. Features: Header only C++11 library

null 44 Jun 28, 2022
SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper.

SQLiteC++ SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper. About SQLiteC++: SQLiteC++ offers an encapsulation around the native C

Sébastien Rombauts 1.5k Jul 4, 2022
Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Neptune 7 Apr 24, 2022
Money Manager Ex is an easy to use, money management application built with wxWidgets

Money Manager Ex Money Manager Ex is a free, open-source, cross-platform, easy-to-use personal finance software. It primarily helps organize one's fin

Money Manager EX 1.1k Jul 6, 2022
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.

Overview GridDB is Database for IoT with both NoSQL interface and SQL Interface. Please refer to GridDB Features Reference for functionality. This rep

GridDB 1.8k Jun 27, 2022
Simple constant key/value storage library, for read-heavy systems with infrequent large bulk inserts.

Sparkey is a simple constant key/value storage library. It is mostly suited for read heavy systems with infrequent large bulk inserts. It includes bot

Spotify 965 Jun 19, 2022
❤️ SQLite ORM light header only library for modern C++

SQLite ORM SQLite ORM light header only library for modern C++ Status Branch Travis Appveyor master dev Advantages No raw string queries Intuitive syn

Yevgeniy Zakharov 1.6k Jun 27, 2022
A type safe SQL template library for C++

sqlpp11 A type safe embedded domain specific language for SQL queries and results in C++ Documentation is found in the wiki So what is this about? SQL

Roland Bock 2k Jul 2, 2022
Kreon is a key-value store library optimized for flash-based storage

Kreon is a key-value store library optimized for flash-based storage, where CPU overhead and I/O amplification are more significant bottlenecks compared to I/O randomness.

Computer Architecture and VLSI Systems (CARV) Laboratory 21 Jun 26, 2022
Velox is a new C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems.

Velox is a C++ database acceleration library which provides reusable, extensible, and high-performance data processing components

Facebook Incubator 893 Jun 27, 2022
The fastest database-library on Android OS.

Android SQLite3 NDK 封装 Demo下载 (操作:按钮新增 按钮查询 点按编辑 长按删除) 写在前面 sqlite3 开源、集成简单(现在的版本只有2个文件 sqlite3.h sqlite3.c) 这个库抽离自 Telegram 的开源代码、作者:DrKLO 我个人感觉 Tele

水银灯、 2 Dec 27, 2021
LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. Authors: Sanjay Ghem

Google 29.7k Jul 4, 2022
C++11 wrapper for the LMDB embedded B+ tree database library.

lmdb++: a C++11 wrapper for LMDB This is a comprehensive C++ wrapper for the LMDB embedded database library, offering both an error-checked procedural

D.R.Y. C++ 257 Jun 16, 2022
A friendly and lightweight C++ database library for MySQL, PostgreSQL, SQLite and ODBC.

QTL QTL is a C ++ library for accessing SQL databases and currently supports MySQL, SQLite, PostgreSQL and ODBC. QTL is a lightweight library that con

null 155 Jun 26, 2022