Russian Qt Forum
Ноябрь 23, 2024, 14:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: sqlite + qt  (Прочитано 11741 раз)
Bag
Гость
« : Сентябрь 14, 2007, 23:43 »

Подскажите пожалуйста как подключиться к базе sqlite в qt, а то че-то не могу разобраться.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 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());
    }
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bag
Гость
« Ответ #2 : Сентябрь 15, 2007, 15:00 »

Правильно ли я понял, что драйвер sqlite не устанавливается по умолчанию и чтобы его установить нужно, пересобрать qt с пометкой -qt-sql-sqlite? Но qt так долго компилируется, нет ли другого решения этой проблемы?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 15, 2007, 17:09 »

Нужно зайти в папку $QTDIR/src/plugins/sqldrivers/sqlite
qmake -o Makefile
make
Правда я так не собирал. Пройдись поиском по этому форуму и найдешь ответ - вопрос не раз поднимался.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bag
Гость
« Ответ #4 : Сентябрь 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
Записан
AlekSi
Гость
« Ответ #5 : Сентябрь 15, 2007, 20:26 »

чтобы его установить нужно, пересобрать qt с пометкой -qt-sql-sqlite
Лучше -plugin-sql-sqlite
Записан
Bag
Гость
« Ответ #6 : Сентябрь 15, 2007, 22:26 »

Это и есть с -plugin-sql-sqlite. С -qt-sql-sqlite я тоже пробовал собирать таже фигня.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Сентябрь 15, 2007, 23:18 »

Надо сам плугин пересобрать, а не Qt.
Заходим в src\plugins\sqldrivers\sqlite\
делаем qmake, затем make.
И должна сила пребыть с джедаем.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
AlekSi
Гость
« Ответ #8 : Сентябрь 15, 2007, 23:23 »

А что за версия Qt? Лично у меня файла sqlite.h нет, есть sqlite3.h.
И вообще, бери бинарники. Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Сентябрь 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. Работаешь.
Бинарники лучше не использовать потому, что проги большие по размеру получаются, т.к. включено очень многое.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
AlekSi
Гость
« Ответ #10 : Сентябрь 16, 2007, 23:23 »

panter_dsd, весьма жёсткую ты конфигурацию предлагаешь...

А бинарники (и пакеты в Линуксе) хороши в первую очередь тем, что с ними гораздо проще. При разработке размер особого значения не играет, зато можно быстру получить все рабочие компоненты, в том числе и поддержку SQLite. А ко времени релиза человек уже опытным будет, сам соберёт. Улыбающийся
Записан
ритт
Гость
« Ответ #11 : Сентябрь 17, 2007, 00:13 »

2. В projects.pro коментишь строки с SUBDIRS += examples и SUBDIRS += demos (т.е. ставишь в начале строки знак #).

чтобы не собирались экзамплы и демы, делай make sub-src
Записан
AlekSi
Гость
« Ответ #12 : Сентябрь 18, 2007, 07:07 »

Код:
./configure <...> -nomake examples -nomake demos <...>
Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.