QGIS API Documentation 3.29.0-Master (006c3c0232)
qgssqliteutils.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssqliteutils.h
3 -------------------
4 begin : Nov, 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSSQLITEUTILS_H
19#define QGSSQLITEUTILS_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23
24#include <memory>
25#include <QString>
26
27struct sqlite3;
28struct sqlite3_stmt;
29class QVariant;
30
31#ifndef SIP_RUN
32
40struct CORE_EXPORT QgsSqlite3Closer
41{
42
46 void operator()( sqlite3 *database ) const;
47};
48
53{
54
58 void operator()( sqlite3_stmt *statement ) const;
59};
60
69class CORE_EXPORT sqlite3_statement_unique_ptr : public std::unique_ptr< sqlite3_stmt, QgsSqlite3StatementFinalizer>
70{
71 public:
72
76 int step();
77
81 QString columnName( int column ) const;
82
86 QString columnAsText( int column ) const;
87
91 QByteArray columnAsBlob( int column ) const;
92
96 qlonglong columnAsInt64( int column ) const;
97
101 double columnAsDouble( int column ) const;
102
106 int columnCount() const;
107};
108
109
118class CORE_EXPORT sqlite3_database_unique_ptr : public std::unique_ptr< sqlite3, QgsSqlite3Closer>
119{
120 public:
121
127 int open( const QString &path );
128
134 int open_v2( const QString &path, int flags, const char *zVfs );
135
139 QString errorMessage() const;
140
145 sqlite3_statement_unique_ptr prepare( const QString &sql, int &resultCode SIP_OUT ) const;
146
155 int exec( const QString &sql, QString &errorMessage SIP_OUT ) const;
156
157};
158
164QString CORE_EXPORT qgs_sqlite3_mprintf( const char *format, ... );
165
166#endif
167
173class CORE_EXPORT QgsSqliteUtils
174{
175 public:
176
181 static QString quotedString( const QString &value );
182
188 static QString quotedIdentifier( const QString &identifier );
189
196 static QString quotedValue( const QVariant &value );
197
203 static QStringList systemTables();
204
214 static QSet<QString> uniqueFields( sqlite3 *connection, const QString &tableName, QString &errorMessage ) SIP_SKIP;
215
225 static long long nextSequenceValue( sqlite3 *connection, const QString &tableName, QString errorMessage ) SIP_SKIP;
226
227};
228
229#endif // QGSSQLITEUTILS_H
Contains utilities for working with Sqlite data sources.
Unique pointer for sqlite3 databases, which automatically closes the database when the pointer goes o...
Unique pointer for sqlite3 prepared statements, which automatically finalizes the statement when the ...
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:74
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_OUT
Definition: qgis_sip.h:58
struct sqlite3 sqlite3
QString CORE_EXPORT qgs_sqlite3_mprintf(const char *format,...)
Wraps sqlite3_mprintf() by automatically freeing the memory.
Closes a sqlite3 database.
Finalizes an sqlite3 statement.