Название: sqlite + qt
Отправлено: Bag от Сентябрь 14, 2007, 23:43
Подскажите пожалуйста как подключиться к базе sqlite в qt, а то че-то не могу разобраться.
Название: Re: sqlite + qt
Отправлено: Пантер от Сентябрь 15, 2007, 13:09
QSqlDatabase base = QSqlDatabase::addDatabase("QSQLITE"); base.setDatabaseName("....../base.db"); Полный путь к базе if (!base.open()) { QMessageBox::critical(this, tr("Error open"),base.lastError().text()); }
Название: Re: sqlite + qt
Отправлено: Bag от Сентябрь 15, 2007, 15:00
Правильно ли я понял, что драйвер sqlite не устанавливается по умолчанию и чтобы его установить нужно, пересобрать qt с пометкой -qt-sql-sqlite? Но qt так долго компилируется, нет ли другого решения этой проблемы?
Название: Re: sqlite + qt
Отправлено: Пантер от Сентябрь 15, 2007, 17:09
Нужно зайти в папку $QTDIR/src/plugins/sqldrivers/sqlite qmake -o Makefile make Правда я так не собирал. Пройдись поиском по этому форуму и найдешь ответ - вопрос не раз поднимался.
Название: Re: sqlite + qt
Отправлено: Bag от Сентябрь 15, 2007, 19:06
Он выдает ошибку при компиляции. Пытался с самого начала компилировать qt c поддержкой sqlite, но снова возникает ошибка. ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:32:22: sqlite.h: No such file or directory ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In constructor `QSQLiteDriverPrivate::QSQLiteDriverPrivate()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:62: error: `sqlite_encoding' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:62: error: (Each undeclared identifier is reported only once for each function it appears in.) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `void QSQLiteResultPrivate::finalize()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:118: error: `sqlite_finalize' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:121: error: `sqlite_freemem' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `bool QSQLiteResultPrivate::fetchNext(QValueVector<QVariant>*)': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:170: error: `sqlite_step' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:170: error: `SQLITE_BUSY' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:180: error: `SQLITE_ROW' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:192: error: `SQLITE_DONE' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:198: error: `SQLITE_ERROR' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:199: error: `SQLITE_MISUSE' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual bool QSQLiteResult::reset(const QString&)': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:243: error: `sqlite_compile' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:244: error: `SQLITE_OK' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:246: error: `sqlite_freemem' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual int QSQLiteResult::numRowsAffected()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:275: error: `sqlite_changes' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `bool QSQLiteDriver::open(const QString&, const QString&, const QString&, const QString&, int, const QString&)': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:329: error: `sqlite_open' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:332: error: `sqlite_freemem' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual void QSQLiteDriver::close()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:348: error: `sqlite_close' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual bool QSQLiteDriver::beginTransaction()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:366: error: `sqlite_exec' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:368: error: `SQLITE_OK' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:372: error: `sqlite_freemem' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual bool QSQLiteDriver::commitTransaction()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:382: error: `sqlite_exec' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:384: error: `SQLITE_OK' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:388: error: `sqlite_freemem' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp: In member function `virtual bool QSQLiteDriver::rollbackTransaction()': ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:398: error: `sqlite_exec' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:400: error: `SQLITE_OK' undeclared (first use this function) ..\..\..\..\src\sql\drivers\sqlite\qsql_sqlite.cpp:404: error: `sqlite_freemem' undeclared (first use this function) mingw32-make.exe[3]: Leaving directory `C:/QT/3.3.8/plugins/src/sqldrivers/sqlite' mingw32-make.exe[2]: Leaving directory `C:/QT/3.3.8/plugins/src/sqldrivers' mingw32-make.exe[1]: Leaving directory `C:/QT/3.3.8/plugins/src' mingw32-make.exe[3]: *** [tmp\obj\release_mt_shared\qsql_sqlite.o] Error 1 mingw32-make.exe[2]: *** [sub-sqlite] Error 2 mingw32-make.exe[1]: *** [sub-sqldrivers] Error 2 mingw32-make.exe: *** [sub-plugins] Error 2
Название: Re: sqlite + qt
Отправлено: AlekSi от Сентябрь 15, 2007, 20:26
чтобы его установить нужно, пересобрать qt с пометкой -qt-sql-sqlite Лучше -plugin-sql-sqlite
Название: Re: sqlite + qt
Отправлено: Bag от Сентябрь 15, 2007, 22:26
Это и есть с -plugin-sql-sqlite. С -qt-sql-sqlite я тоже пробовал собирать таже фигня.
Название: Re: sqlite + qt
Отправлено: Racheengel от Сентябрь 15, 2007, 23:18
Надо сам плугин пересобрать, а не Qt. Заходим в src\plugins\sqldrivers\sqlite\ делаем qmake, затем make. И должна сила пребыть с джедаем.
Название: Re: sqlite + qt
Отправлено: AlekSi от Сентябрь 15, 2007, 23:23
А что за версия Qt? Лично у меня файла sqlite.h нет, есть sqlite3.h. И вообще, бери бинарники. (http://trolltech.com/developer/downloads/qt/windows) :)
Название: Re: sqlite + qt
Отправлено: Пантер от Сентябрь 16, 2007, 12:55
Нафиг бинарники? Кутя отлично собирается. Вот пример сбора под виндой: 1. Делаешь build.bat следующего содержания configure -release -static -no-fast -no-exceptions -no-accessibility -no-stl -qt-sql-odbc -qt-sql-sqlite -no-qt3support -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-dsp -no-vcproj -no-incredibuild-xge -no-rtti -no-mmx -no-3dnow -no-sse -no-sse2 -no-openssl -no-style-cleanlooks -no-style-motif -no-style-cde
2. В projects.pro коментишь строки с SUBDIRS += examples и SUBDIRS += demos (т.е. ставишь в начале строки знак #). 3. Запускаешь батник, говоришь Y. 4. Запускаешь make и ждешь 20-40 минут. 5. Работаешь. Бинарники лучше не использовать потому, что проги большие по размеру получаются, т.к. включено очень многое.
Название: Re: sqlite + qt
Отправлено: AlekSi от Сентябрь 16, 2007, 23:23
panter_dsd, весьма жёсткую ты конфигурацию предлагаешь...
А бинарники (и пакеты в Линуксе) хороши в первую очередь тем, что с ними гораздо проще. При разработке размер особого значения не играет, зато можно быстру получить все рабочие компоненты, в том числе и поддержку SQLite. А ко времени релиза человек уже опытным будет, сам соберёт. :)
Название: Re: sqlite + qt
Отправлено: ритт от Сентябрь 17, 2007, 00:13
2. В projects.pro коментишь строки с SUBDIRS += examples и SUBDIRS += demos (т.е. ставишь в начале строки знак #).
чтобы не собирались экзамплы и демы, делай make sub-src
Название: Re: sqlite + qt
Отправлено: AlekSi от Сентябрь 18, 2007, 07:07
./configure <...> -nomake examples -nomake demos <...> ;)
|