Qt4 mit Sqlite 3.3.8

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Qt4 mit Sqlite 3.3.8

Beitrag von Volker »

Bei den kurzen Abständen in denen Trolltech neue QT Versionen raus bringt, hab ich mir gedacht vielleicht ist es für den einen oder anderen hilfreich, wenn ich die Anpassungen die für eine Integration von SQLite 3.3.8 nötig sind hier veröffentliche:

Zunächst den Sourcecode von SQLite 3.3.8 hier runterladen und in das Verzeichnis src\3rdparty\sqlite im QT Installationspfad entpacken und die dort vorhandenen Dateien überschreiben.

Anschließend in der Datei "drivers.pri" im Verzeichnis "src\sql\drivers" des QT Installationspfades den Abschnitt contains(sql-drivers, sqlite) ersetzen mit folgendem Code:

Code: Alles auswählen

contains(sql-drivers, sqlite) {
    !system-sqlite:!contains( LIBS, .*sqlite3.* ) {
        CONFIG(release, debug|release):DEFINES *= NDEBUG
        INCLUDEPATH +=  ../3rdparty/sqlite
	DEFINE += NO_TCL
        SOURCES +=      ../3rdparty/sqlite/alter.c \
                        ../3rdparty/sqlite/analyze.c \
                        ../3rdparty/sqlite/attach.c \
                        ../3rdparty/sqlite/auth.c \
                        ../3rdparty/sqlite/btree.c \
                        ../3rdparty/sqlite/build.c \
                        ../3rdparty/sqlite/callback.c \
                        ../3rdparty/sqlite/complete.c \
                        ../3rdparty/sqlite/date.c \
                        ../3rdparty/sqlite/delete.c \
                        ../3rdparty/sqlite/expr.c \
                        ../3rdparty/sqlite/fts1.c \
                        ../3rdparty/sqlite/fts1_hash.c \
                        ../3rdparty/sqlite/fts1_porter.c \
                        ../3rdparty/sqlite/fts1_tokenizer1.c \
                        ../3rdparty/sqlite/func.c \
                        ../3rdparty/sqlite/hash.c \
                        ../3rdparty/sqlite/insert.c \
                        ../3rdparty/sqlite/legacy.c \
                        ../3rdparty/sqlite/loadext.c \
                        ../3rdparty/sqlite/main.c \
                        ../3rdparty/sqlite/opcodes.c \
                        ../3rdparty/sqlite/os.c \
                        ../3rdparty/sqlite/pager.c \
                        ../3rdparty/sqlite/parse.c \
                        ../3rdparty/sqlite/pragma.c \
                        ../3rdparty/sqlite/prepare.c \
                        ../3rdparty/sqlite/printf.c \
                        ../3rdparty/sqlite/random.c \
                        ../3rdparty/sqlite/select.c \
                        ../3rdparty/sqlite/table.c \
                        ../3rdparty/sqlite/tokenize.c \
                        ../3rdparty/sqlite/trigger.c \
                        ../3rdparty/sqlite/update.c \
                        ../3rdparty/sqlite/utf.c \
                        ../3rdparty/sqlite/util.c \
                        ../3rdparty/sqlite/vacuum.c \
                        ../3rdparty/sqlite/vdbeapi.c \
                        ../3rdparty/sqlite/vdbeaux.c \
                        ../3rdparty/sqlite/vdbe.c \
                        ../3rdparty/sqlite/vdbefifo.c \
                        ../3rdparty/sqlite/vdbemem.c \
                        ../3rdparty/sqlite/where.c \
                        ../3rdparty/sqlite/vtab.c
        unix:SOURCES += ../3rdparty/sqlite/os_unix.c
        win32:SOURCES +=  ../3rdparty/sqlite/os_win.c
    } else {
        LIBS *= $$QT_LFLAGS_SQLITE
        QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE
    }

    HEADERS +=      drivers/sqlite/qsql_sqlite.h
    SOURCES +=      drivers/sqlite/qsql_sqlite.cpp
}
Genauso in der Datei "sqlite.pro" im Verzeichnis plugins\sqldrivers\sqlite des QT Installationspfades den Abschnitt !system-sqlite:!contains( LIBS, .*sqlite.* )
durch folgendes ersetzen:

Code: Alles auswählen

!system-sqlite:!contains( LIBS, .*sqlite.* ) {
    CONFIG(release, debug|release):DEFINES *= NDEBUG
    INCLUDEPATH += ../../../3rdparty/sqlite
    DEFINE += NO_TCL
    SOURCES += ../../../3rdparty/sqlite/alter.c \
               ../../../3rdparty/sqlite/analyze.c \
               ../../../3rdparty/sqlite/attach.c \
               ../../../3rdparty/sqlite/auth.c \
               ../../../3rdparty/sqlite/btree.c \
               ../../../3rdparty/sqlite/build.c \
               ../../../3rdparty/sqlite/callback.c \
               ../../../3rdparty/sqlite/complete.c \
               ../../../3rdparty/sqlite/date.c \
               ../../../3rdparty/sqlite/delete.c \
               ../../../3rdparty/sqlite/expr.c \
               ../../../3rdparty/sqlite/fts1.c \
               ../../../3rdparty/sqlite/fts1_hash.c \
               ../../../3rdparty/sqlite/fts1_porter.c \
               ../../../3rdparty/sqlite/fts1_tokenizer1.c \
               ../../../3rdparty/sqlite/func.c \
               ../../../3rdparty/sqlite/hash.c \
               ../../../3rdparty/sqlite/insert.c \
               ../../../3rdparty/sqlite/legacy.c \
               ../../../3rdparty/sqlite/loadext.c \
               ../../../3rdparty/sqlite/main.c \
               ../../../3rdparty/sqlite/opcodes.c \
               ../../../3rdparty/sqlite/os.c \
               ../../../3rdparty/sqlite/pager.c \
               ../../../3rdparty/sqlite/parse.c \
               ../../../3rdparty/sqlite/pragma.c \
               ../../../3rdparty/sqlite/prepare.c \
               ../../../3rdparty/sqlite/printf.c \
               ../../../3rdparty/sqlite/random.c \
               ../../../3rdparty/sqlite/select.c \
               ../../../3rdparty/sqlite/table.c \
               ../../../3rdparty/sqlite/tokenize.c \
               ../../../3rdparty/sqlite/trigger.c \
               ../../../3rdparty/sqlite/update.c \
               ../../../3rdparty/sqlite/utf.c \
               ../../../3rdparty/sqlite/util.c \
               ../../../3rdparty/sqlite/vacuum.c \
               ../../../3rdparty/sqlite/vdbeapi.c \
               ../../../3rdparty/sqlite/vdbeaux.c \
               ../../../3rdparty/sqlite/vdbe.c \
               ../../../3rdparty/sqlite/vdbefifo.c \
               ../../../3rdparty/sqlite/vdbemem.c \
               ../../../3rdparty/sqlite/where.c
               ../../../3rdparty/sqlite/vtab.c
               unix:SOURCES += ../../../3rdparty/sqlite/os_unix.c
               win32:SOURCES += ../../../3rdparty/sqlite/os_win.c
} else {
    LIBS *= $$QT_LFLAGS_SQLITE
    QMAKE_CXXFLAGS *= $$QT_CFLAGS_SQLITE
}
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Was bringt die Umstellung auf SQlite 3.3.8 zu der von Qt mitgelieferten Version?
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Alles was seit 3.3.6 geändert wurde:

2006 October 9 (3.3.8)

* Support for full text search using the FTS1 module (beta)
* Added OS-X locking patches (beta - disabled by default)
* Introduce extended error codes and add error codes for various kinds of I/O errors.
* Added support for IF EXISTS on CREATE/DROP TRIGGER/VIEW
* Fix the regression test suite so that it works with Tcl8.5
* Enhance sqlite3_set_authorizer() to provide notification of calls to SQL functions.
* Added experimental API: sqlite3_auto_extension()
* Various minor bug fixes

2006 August 12 (3.3.7)

* Added support for virtual tables (beta)
* Added support for dynamically loaded extensions (beta)
* The sqlite3_interrupt() routine can be called for a different thread
* Added the MATCH operator.
* The default file format is now 1.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
Antworten