10#if __has_include("defs.h") 
   21#include "safe_winsock.h" 
   22#include <sqlite3/sqlite3.h> 
   29#if (defined(_MSVC_LANG) && _MSVC_LANG < 202002L)                             \ 
   30 || (!defined(_MSVC_LANG) && (__cplusplus < 202002L)) 
   31#error "sqlitepp requires c++20" 
   34#pragma comment(lib, "sqlite3.lib") 
   48  Query (Database& db, 
const std::string& 
sql = std::string ());
 
   65  operator sqlite3_stmt* ();
 
   74  std::string 
sql () 
const;
 
   77  operator std::string () 
const;
 
   82  Query& 
bind (
int par, 
const std::string& val);
 
   83  Query& 
bind (
const std::string& parname, 
const std::string& val);
 
   85  Query& 
bind (
const std::string& parname, 
int val);
 
   87  Query& 
bind (
const std::string& parname, 
double val);
 
   89  Query& 
bind (
const std::string& parname, sqlite3_int64 val);
 
   90  Query& 
bind (
int par, 
void* val, 
int len);
 
   91  Query& 
bind (
const std::string& parname, 
void* val, 
int len);
 
   93  Query& 
bind (
int par, 
const SYSTEMTIME& st);
 
   94  Query& 
bind (
const std::string& parname, 
const SYSTEMTIME& st);
 
  100  int column_int (
const std::string& colname) 
const;
 
  103  std::string 
column_str (
const std::string& colname) 
const;
 
  106  const char* 
column_text (
const std::string& colname) 
const;
 
  112  sqlite3_int64 
column_int64 (
const std::string& name) 
const;
 
  115  const void* 
column_blob (
const std::string& name) 
const;
 
  118  SYSTEMTIME column_time (
int nc) 
const;
 
  119  SYSTEMTIME column_time (
const std::string& name) 
const;
 
  123  int column_type (
const std::string& colname) 
const;
 
  126  int column_size (
const std::string& colname) 
const;
 
  128#ifndef SQLITE_OMIT_DECLTYPE 
  130  std::string 
decl_type (
const std::string& colname) 
const;
 
  133#ifdef SQLITE_ENABLE_COLUMN_METADATA 
  135  std::string 
table_name (
const std::string& colname) 
const;
 
  138  std::string 
database_name (
const std::string& colname) 
const;
 
  153  friend class Database;
 
  155  void map_columns () 
const;
 
  156  int find_col (
const std::string& colname) 
const;
 
  157  erc check_errors (
int rc);
 
  160  std::shared_ptr<sqlite3> dbase;
 
  166    bool operator() (
const std::string& left, 
const std::string& right) 
const;
 
  169  std::map<std::string, int, Query::iless> 
mutable index;
 
  170  bool mutable col_mapped;
 
 
  182    create          = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 
 
  188    memory        = SQLITE_OPEN_MEMORY | SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,  
 
 
  220    return db ? db.get () : 
nullptr;
 
 
  239  erc exec (
const std::string& sql);
 
  248  std::filesystem::path 
path (
const std::string& 
schema = 
"main") 
const;
 
  251  std::string 
schema (
int n) 
const;
 
  262    sqlite_errors = &fac;
 
 
  268    return *sqlite_errors;
 
 
  272  std::shared_ptr<sqlite3> db;
 
  275  static errfac* sqlite_errors;
 
 
  283  return sqlite3_last_insert_rowid (db.get ());
 
 
  289  return sqlite3_changes64 (db.get ());
 
 
  295  return sqlite3_total_changes64 (db.get ());
 
 
  303inline Query::operator sqlite3_stmt* ()
 
 
  310  return sqlite3_column_count (stmt);
 
 
  323inline bool Query::iless::operator() (
const std::string& left, 
const std::string& right)
 const 
  326  return _strcmpi (left.c_str (), right.c_str ()) < 0;
 
  328  return strcasecmp (left.c_str (), right.c_str ()) < 0;
 
  335inline Query::operator std::string ()
 const 
 
Wrapper for database connection handle.
Definition sqlitepp.h:175
 
static void Errors(mlib::errfac &fac)
Set error facility for all SQLITEPP errors.
Definition sqlitepp.h:260
 
erc close()
Close database connection.
Definition sqlitepp.cpp:177
 
Database()
Default constructor.
Definition sqlitepp.cpp:54
 
int extended_error()
Return extended result code.
Definition sqlitepp.cpp:237
 
Database & copy(Database &src)
Copy database content.
Definition sqlitepp.cpp:80
 
erc exec(const std::string &sql)
Execute multiple SQL sentences.
Definition sqlitepp.cpp:184
 
openflags
Flags for database opening mode.
Definition sqlitepp.h:179
 
@ sharedcache
database connection is eligible to use shared cache mode
Definition sqlitepp.h:186
 
@ nofollow
filename cannot be a symbolic link
Definition sqlitepp.h:189
 
@ privatecache
database connection does not participate in shared cache mode
Definition sqlitepp.h:187
 
@ readwrite
Read/write access on existing database.
Definition sqlitepp.h:181
 
@ readonly
Read-only access.
Definition sqlitepp.h:180
 
@ ext_result
enables extended result codes
Definition sqlitepp.h:190
 
@ create
Read/write/create access.
Definition sqlitepp.h:182
 
@ uri
filename is interpreted as a URI
Definition sqlitepp.h:183
 
@ fullmutex
database connection opens in the serialized mode
Definition sqlitepp.h:185
 
@ nomutex
database connection opens in multi-threaded mode
Definition sqlitepp.h:184
 
@ memory
database opened in memory
Definition sqlitepp.h:188
 
checked< Query > make_query(const std::string &sql)
Return a Query object containing a prepared statement with the given SQL text.
Definition sqlitepp.cpp:202
 
checked< Query > make_query_multiple(std::string &sql)
Return a Query object containing the first prepared statement of the given SQL text.
Definition sqlitepp.cpp:220
 
sqlite3_int64 changes()
Return number of records changed by last query.
Definition sqlitepp.h:286
 
bool connected()
Check if database is opened or not.
Definition sqlitepp.h:203
 
sqlite3_int64 last_rowid()
Return rowid of last successful insert.
Definition sqlitepp.h:280
 
std::filesystem::path path(const std::string &schema="main") const
Return file path of a database connection.
Definition sqlitepp.cpp:120
 
sqlite3_int64 total_changes()
Return total number of changes since database was opened.
Definition sqlitepp.h:292
 
sqlite3 * handle() const
Return handle of database connection.
Definition sqlitepp.h:218
 
erc open(const std::filesystem::path &name, openflags flags=openflags::create)
Open database connection.
Definition sqlitepp.cpp:162
 
bool is_readonly()
Return true if database connection is read-only.
Definition sqlitepp.cpp:148
 
static const errfac & Errors()
Return error facility used by SQLITEPP.
Definition sqlitepp.h:266
 
std::string schema(int n) const
Return schema name for a database connection.
Definition sqlitepp.cpp:136
 
erc flush()
Flush.
Definition sqlitepp.cpp:243
 
Wrapper for SQL prepared sentences.
Definition sqlitepp.h:42
 
int column_int(int nc) const
Return column value converted to an integer.
Definition sqlitepp.cpp:826
 
std::string decl_type(int nc) const
Definition sqlitepp.cpp:637
 
int column_type(int nc) const
Return data type for a column specified by name or number.
Definition sqlitepp.cpp:594
 
Query & clear_bindings()
Reset all parameters to NULL values.
Definition sqlitepp.cpp:577
 
sqlite3_int64 column_int64(int nc) const
Return column value converted to a 64-bit integer.
Definition sqlitepp.cpp:905
 
std::string column_str(int nc) const
Return column value as an UTF-8 encoded string.
Definition sqlitepp.cpp:842
 
void clear()
Finalizes the statement and removes the database connection.
Definition sqlitepp.cpp:423
 
const char * column_text(int nc) const
Return a pointer to a NULL-terminated text with the column content.
Definition sqlitepp.cpp:863
 
Query()
Default constructor.
Definition sqlitepp.h:298
 
erc reset()
Reset statement to initial state.
Definition sqlitepp.cpp:413
 
int columns()
Return number of columns in the result set.
Definition sqlitepp.h:308
 
std::string column_name(int nc) const
Return column name.
Definition sqlitepp.cpp:789
 
Query & operator=(Query &&rhs)
Move assignment operator.
Definition sqlitepp.cpp:322
 
int column_size(int nc) const
Return number of bytes in a column that contains a BLOB or a string.
Definition sqlitepp.cpp:610
 
const void * column_blob(int nc) const
Return a pointer to a BLOB with the column content.
Definition sqlitepp.cpp:921
 
Query & sql(const std::string &str)
Assign SQL text to a query.
Definition sqlitepp.cpp:367
 
std::string table_name(int nc) const
Return originating table name.
Definition sqlitepp.cpp:685
 
double column_double(int nc) const
Return floating point value of the column.
Definition sqlitepp.cpp:884
 
erc step()
Evaluate the statement.
Definition sqlitepp.cpp:401
 
std::string sql() const
Retrieve SQL text.
Definition sqlitepp.cpp:387
 
std::string database_name(int nc) const
Return originating schema name.
Definition sqlitepp.cpp:741
 
Query & bind(int par, const std::string &val)
Bind a parameter specified by number to a character string.
Definition sqlitepp.cpp:453
 
Provides a mechanism similar to expected for creating objects associated with error codes.
Definition errorcode.h:203
 
objects returned as a function result or thrown directly.
Definition errorcode.h:73
 
An error facility routes a group of errors handled in a similar manner.
Definition errorcode.h:141
 
Definition of mlib::erc and mlib::errfac classes.