Seite 1 von 1

Qt4 mit Sqlite 3.3.8

Verfasst: 24. Oktober 2006 18:37
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
}

Verfasst: 24. Oktober 2006 21:19
von FlorianBecker
Was bringt die Umstellung auf SQlite 3.3.8 zu der von Qt mitgelieferten Version?

Verfasst: 24. Oktober 2006 22:57
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.