| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,124 @@ | ||
| /**************************************************************************** | ||
| ** | ||
| ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). | ||
| ** Contact: http://www.qt-project.org/legal | ||
| ** | ||
| ** This file is part of the QtSql module of the Qt Toolkit. | ||
| ** | ||
| ** $QT_BEGIN_LICENSE:LGPL$ | ||
| ** Commercial License Usage | ||
| ** Licensees holding valid commercial Qt licenses may use this file in | ||
| ** accordance with the commercial license agreement provided with the | ||
| ** Software or, alternatively, in accordance with the terms contained in | ||
| ** a written agreement between you and Digia. For licensing terms and | ||
| ** conditions see http://qt.digia.com/licensing. For further information | ||
| ** use the contact form at http://qt.digia.com/contact-us. | ||
| ** | ||
| ** GNU Lesser General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU Lesser | ||
| ** General Public License version 2.1 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.LGPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU Lesser General Public License version 2.1 requirements | ||
| ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||
| ** | ||
| ** In addition, as a special exception, Digia gives you certain additional | ||
| ** rights. These rights are described in the Digia Qt LGPL Exception | ||
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | ||
| ** | ||
| ** GNU General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU | ||
| ** General Public License version 3.0 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.GPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU General Public License version 3.0 requirements will be | ||
| ** met: http://www.gnu.org/copyleft/gpl.html. | ||
| ** | ||
| ** | ||
| ** $QT_END_LICENSE$ | ||
| ** | ||
| ****************************************************************************/ | ||
|
|
||
| #ifndef QSQL_SQLITE_H | ||
| #define QSQL_SQLITE_H | ||
|
|
||
| #include <QtSql/qsqldriver.h> | ||
| #include <QtSql/qsqlresult.h> | ||
|
|
||
| #include "qsqlcachedresult_p.h" | ||
|
|
||
| struct sqlite3; | ||
|
|
||
| #ifdef QT_PLUGIN | ||
| #define Q_EXPORT_SQLDRIVER_SQLITE | ||
| #else | ||
| #define Q_EXPORT_SQLDRIVER_SQLITE Q_SQL_EXPORT | ||
| #endif | ||
|
|
||
| QT_BEGIN_HEADER | ||
|
|
||
| QT_BEGIN_NAMESPACE | ||
| class QSpatiaLiteDriverPrivate; | ||
| class QSpatiaLiteResultPrivate; | ||
| class QSpatiaLiteDriver; | ||
|
|
||
| class QSpatiaLiteResult : public QSqlCachedResult | ||
| { | ||
| friend class QSpatiaLiteDriver; | ||
| friend class QSpatiaLiteResultPrivate; | ||
| public: | ||
| explicit QSpatiaLiteResult(const QSpatiaLiteDriver* db); | ||
| ~QSpatiaLiteResult(); | ||
| QVariant handle() const; | ||
|
|
||
| protected: | ||
| bool gotoNext(QSqlCachedResult::ValueCache& row, int idx); | ||
| bool reset(const QString &query); | ||
| bool prepare(const QString &query); | ||
| bool exec(); | ||
| int size(); | ||
| int numRowsAffected(); | ||
| QVariant lastInsertId() const; | ||
| QSqlRecord record() const; | ||
| void virtual_hook(int id, void *data); | ||
|
|
||
| private: | ||
| QSpatiaLiteResultPrivate* d; | ||
| }; | ||
|
|
||
| class Q_EXPORT_SQLDRIVER_SQLITE QSpatiaLiteDriver : public QSqlDriver | ||
| { | ||
| Q_OBJECT | ||
| friend class QSpatiaLiteResult; | ||
| public: | ||
| explicit QSpatiaLiteDriver(QObject *parent = 0); | ||
| explicit QSpatiaLiteDriver(sqlite3 *connection, QObject *parent = 0); | ||
| ~QSpatiaLiteDriver(); | ||
| bool hasFeature(DriverFeature f) const; | ||
| bool open(const QString & db, | ||
| const QString & user, | ||
| const QString & password, | ||
| const QString & host, | ||
| int port, | ||
| const QString & connOpts); | ||
| void close(); | ||
| QSqlResult *createResult() const; | ||
| bool beginTransaction(); | ||
| bool commitTransaction(); | ||
| bool rollbackTransaction(); | ||
| QStringList tables(QSql::TableType) const; | ||
|
|
||
| QSqlRecord record(const QString& tablename) const; | ||
| QSqlIndex primaryIndex(const QString &table) const; | ||
| QVariant handle() const; | ||
| QString escapeIdentifier(const QString &identifier, IdentifierType) const; | ||
|
|
||
| private: | ||
| QSpatiaLiteDriverPrivate* d; | ||
| }; | ||
|
|
||
| QT_END_NAMESPACE | ||
|
|
||
| QT_END_HEADER | ||
|
|
||
| #endif // QSQL_SQLITE_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| /**************************************************************************** | ||
| ** | ||
| ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). | ||
| ** Contact: http://www.qt-project.org/legal | ||
| ** | ||
| ** This file is part of the QtSql module of the Qt Toolkit. | ||
| ** | ||
| ** $QT_BEGIN_LICENSE:LGPL$ | ||
| ** Commercial License Usage | ||
| ** Licensees holding valid commercial Qt licenses may use this file in | ||
| ** accordance with the commercial license agreement provided with the | ||
| ** Software or, alternatively, in accordance with the terms contained in | ||
| ** a written agreement between you and Digia. For licensing terms and | ||
| ** conditions see http://qt.digia.com/licensing. For further information | ||
| ** use the contact form at http://qt.digia.com/contact-us. | ||
| ** | ||
| ** GNU Lesser General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU Lesser | ||
| ** General Public License version 2.1 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.LGPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU Lesser General Public License version 2.1 requirements | ||
| ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||
| ** | ||
| ** In addition, as a special exception, Digia gives you certain additional | ||
| ** rights. These rights are described in the Digia Qt LGPL Exception | ||
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | ||
| ** | ||
| ** GNU General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU | ||
| ** General Public License version 3.0 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.GPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU General Public License version 3.0 requirements will be | ||
| ** met: http://www.gnu.org/copyleft/gpl.html. | ||
| ** | ||
| ** | ||
| ** $QT_END_LICENSE$ | ||
| ** | ||
| ****************************************************************************/ | ||
|
|
||
| #ifndef QSQLCACHEDRESULT_P_H | ||
| #define QSQLCACHEDRESULT_P_H | ||
|
|
||
| // | ||
| // W A R N I N G | ||
| // ------------- | ||
| // | ||
| // This file is not part of the Qt API. It exists for the convenience | ||
| // of other Qt classes. This header file may change from version to | ||
| // version without notice, or even be removed. | ||
| // | ||
| // We mean it. | ||
| // | ||
|
|
||
| #include "QtSql/qsqlresult.h" | ||
|
|
||
| QT_BEGIN_NAMESPACE | ||
|
|
||
| class QVariant; | ||
| template <typename T> class QVector; | ||
|
|
||
| class QSqlCachedResultPrivate; | ||
|
|
||
| class Q_SQL_EXPORT QSqlCachedResult: public QSqlResult | ||
| { | ||
| public: | ||
| virtual ~QSqlCachedResult(); | ||
|
|
||
| typedef QVector<QVariant> ValueCache; | ||
|
|
||
| protected: | ||
| QSqlCachedResult( const QSqlDriver * db ); | ||
|
|
||
| void init( int colCount ); | ||
| void cleanup(); | ||
| void clearValues(); | ||
|
|
||
| virtual bool gotoNext( ValueCache &values, int index ) = 0; | ||
|
|
||
| QVariant data( int i ); | ||
| bool isNull( int i ); | ||
| bool fetch( int i ); | ||
| bool fetchNext(); | ||
| bool fetchPrevious(); | ||
| bool fetchFirst(); | ||
| bool fetchLast(); | ||
|
|
||
| int colCount() const; | ||
| ValueCache &cache(); | ||
|
|
||
| void virtual_hook( int id, void *data ); | ||
| private: | ||
| bool cacheNext(); | ||
| QSqlCachedResultPrivate *d; | ||
| }; | ||
|
|
||
| QT_END_NAMESPACE | ||
|
|
||
| #endif // QSQLCACHEDRESULT_P_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,81 @@ | ||
| /**************************************************************************** | ||
| ** | ||
| ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). | ||
| ** Contact: http://www.qt-project.org/legal | ||
| ** | ||
| ** This file is part of the plugins of the Qt Toolkit. | ||
| ** | ||
| ** $QT_BEGIN_LICENSE:LGPL$ | ||
| ** Commercial License Usage | ||
| ** Licensees holding valid commercial Qt licenses may use this file in | ||
| ** accordance with the commercial license agreement provided with the | ||
| ** Software or, alternatively, in accordance with the terms contained in | ||
| ** a written agreement between you and Digia. For licensing terms and | ||
| ** conditions see http://qt.digia.com/licensing. For further information | ||
| ** use the contact form at http://qt.digia.com/contact-us. | ||
| ** | ||
| ** GNU Lesser General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU Lesser | ||
| ** General Public License version 2.1 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.LGPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU Lesser General Public License version 2.1 requirements | ||
| ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | ||
| ** | ||
| ** In addition, as a special exception, Digia gives you certain additional | ||
| ** rights. These rights are described in the Digia Qt LGPL Exception | ||
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | ||
| ** | ||
| ** GNU General Public License Usage | ||
| ** Alternatively, this file may be used under the terms of the GNU | ||
| ** General Public License version 3.0 as published by the Free Software | ||
| ** Foundation and appearing in the file LICENSE.GPL included in the | ||
| ** packaging of this file. Please review the following information to | ||
| ** ensure the GNU General Public License version 3.0 requirements will be | ||
| ** met: http://www.gnu.org/copyleft/gpl.html. | ||
| ** | ||
| ** | ||
| ** $QT_END_LICENSE$ | ||
| ** | ||
| ****************************************************************************/ | ||
|
|
||
| #include <qsqldriverplugin.h> | ||
| #include <qstringlist.h> | ||
| #include "qsql_spatialite.h" | ||
|
|
||
| QT_BEGIN_NAMESPACE | ||
|
|
||
| class QSpatiaLiteDriverPlugin : public QSqlDriverPlugin | ||
| { | ||
| public: | ||
| QSpatiaLiteDriverPlugin(); | ||
|
|
||
| QSqlDriver* create(const QString &); | ||
| QStringList keys() const; | ||
| }; | ||
|
|
||
| QSpatiaLiteDriverPlugin::QSpatiaLiteDriverPlugin() | ||
| : QSqlDriverPlugin() | ||
| { | ||
| } | ||
|
|
||
| QSqlDriver* QSpatiaLiteDriverPlugin::create(const QString &name) | ||
| { | ||
| if (name == QLatin1String("QSPATIALITE")) { | ||
| QSpatiaLiteDriver* driver = new QSpatiaLiteDriver(); | ||
| return driver; | ||
| } | ||
| return 0; | ||
| } | ||
|
|
||
| QStringList QSpatiaLiteDriverPlugin::keys() const | ||
| { | ||
| QStringList l; | ||
| l << QLatin1String("QSPATIALITE"); | ||
| return l; | ||
| } | ||
|
|
||
| Q_EXPORT_STATIC_PLUGIN(QSpatiaLiteDriverPlugin) | ||
| Q_EXPORT_PLUGIN2(qspatialite, QSpatiaLiteDriverPlugin) | ||
|
|
||
| QT_END_NAMESPACE |