QGIS API Documentation  3.21.0-Master (564c892cfd)
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 
27 struct sqlite3;
28 struct sqlite3_stmt;
29 class QVariant;
30 
31 #ifndef SIP_RUN
32 
40 struct CORE_EXPORT QgsSqlite3Closer
41 {
42 
46  void operator()( sqlite3 *database );
47 };
48 
52 struct CORE_EXPORT QgsSqlite3StatementFinalizer
53 {
54 
58  void operator()( sqlite3_stmt *statement );
59 };
60 
69 class 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 
118 class 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 
164 QString CORE_EXPORT qgs_sqlite3_mprintf( const char *format, ... );
165 
166 #endif
167 
173 class 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:79
#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.