Название: SQLite бд и Qt Отправлено: dima123 от Март 10, 2011, 22:09 Помогите подключить созданную в acces бд простейшим способом
версия qt последняя. Название: Re: Acces бд и Qt Отправлено: ieroglif от Март 10, 2011, 22:30 глянь маны по QSqlDatabase в сторону QODBC драйвера.
там где-то даже пример был Название: Re: Acces бд и Qt Отправлено: GraninAS от Март 11, 2011, 07:41 Алгоритм примерно такой.
- Панель Управления -> Администрирование -> Источники данных (ODBC). - Добавляете новый источник данных. Драйвер: Microsoft Access Driver Имя источника данных - то имя, которое вы будете передавать в качестве имени базы данных в класс QSqlDatabase. "База данных" - файл бд Access. Там еще какие-то поля, заполняете по мере надобности (я туда не лазил никогда, не знаю). В программе: - подключить модуль sql в pro-файле: QT += sql - подсоединиться к БД: QSqlDatabase db; db = QSqlDatabase::addDatabase("QODBC"); db.setHostName(/*IP-адрес или имя хоста*/); db.setDatabaseName(/*Имя базы данных, оно же - имя источника данных*/); db.setUserName(/*Пользователь*/); db.setPassword(/*Пароль*/); if (!db.open()) { qDebug() << "DB open failed. Error message: " << db.lastError().text(); } else { qDebug() << "Success DB open."; } По умолчанию драйвер QODBC, вроде, собран и присутствует. Если нет, - придется пересобирать Qt и драйвер. Название: Re: Acces бд и Qt Отправлено: Пантер от Март 11, 2011, 08:23 Если есть возможность, не используй БД access, так как она дурацкая. SQLite намного лучше.
Название: Re: Acces бд и Qt Отправлено: Maquefel от Март 11, 2011, 16:25 Код: QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=" И еще кстати в последней версии Qt необходимо её собрать. Если есть возможность, не используй БД access, так как она дурацкая. SQLite намного лучше. И таки да - не используй. Название: Re: Acces бд и Qt Отправлено: dima123 от Март 11, 2011, 16:43 QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="sDatabaseName.append("D:\db1.mdb");
не компилит а как собрать? а SQLite бд, в примере сохраняется в папке с проектом?и чем её можно открыть? Название: Re: Acces бд и Qt Отправлено: Drafter от Март 12, 2011, 11:57 Цитировать а SQLite бд, в примере сохраняется в папке с проектом?и чем её можно открыть? Вся SQLite база хранится в одном файле. Где он расположен - не принципиально. Открыть (создать) можно, к примеру, с помощью SQLite Expert (http://www.sqliteexpert.com/index.html). Название: Re: Acces бд и Qt Отправлено: Sergey B. от Март 12, 2011, 12:05 помощью SQLite Expert (http://www.sqliteexpert.com/index.html). Проприетарщина...есть опенсорс (http://www.sqliteman.com/) тулзы. Название: Re: Acces бд и Qt Отправлено: Mikhail от Март 12, 2011, 15:07 SQLite база и таблицы в ней отлично создаются средствам Qt.
Название: Re: Acces бд и Qt Отправлено: Sergey B. от Март 12, 2011, 16:35 SQLite база и таблицы в ней отлично создаются средствам Qt. Я так и делаю. Просто некоторые могут не уметь или предпочитать GUI дизайнер. Название: Re: Acces бд и Qt Отправлено: Maquefel от Март 14, 2011, 09:33 QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="sDatabaseName.append("D:\db1.mdb"); не компилит а как собрать? а SQLite бд, в примере сохраняется в папке с проектом?и чем её можно открыть? Код: QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="; Собрать: заходишь в {$QTDIR} cd src\plugins\sqldrivers\odbc qmake mingw32-make mingw32-make install если mingw иначе cmake по-моему Название: Re: Acces бд и Qt Отправлено: Пантер от Март 14, 2011, 10:11 nmake. cmake это другое.
Название: Re: Acces бд и Qt Отправлено: dima123 от Март 19, 2011, 12:50 спасибо, работаю с SQLite
интересует вопрос , как в запрос передать не значения, а переменную например: int a=1; QString b="asd"; model->setQuery("insert into tables values(как тут переменные записуються?)"); Название: Re: SQLite бд и Qt Отправлено: Sergey B. от Март 19, 2011, 14:44 Почитать документацию. Там всё расписано.
Название: Re: SQLite бд и Qt Отправлено: dima123 от Март 20, 2011, 18:23 сделал.
теперь передаю в запрос русские слова,а заносятся в таблицу крякозярбы query.exec("insert into a values(1, 'апролллджє', '100')"); Название: Re: SQLite бд и Qt Отправлено: Mikhail от Март 20, 2011, 20:25 Неоднократно упоминалось о том, что в коде программы не стоит использовать русский текст, как и любой другой кроме английского.
При исполнении программы можно ввести русский текст - значение поля, и сформировать запрос к БД. Тогда все получится правильно. Название: Re: SQLite бд и Qt Отправлено: Пантер от Март 21, 2011, 10:01 1. Не используй в коде кириллицу.
2. Почитай про prepare и bindValue. Название: Re: SQLite бд и Qt Отправлено: dima123 от Март 21, 2011, 14:03 решил проблему так:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("cp1251")); норм? Название: Re: SQLite бд и Qt Отправлено: Пантер от Март 21, 2011, 14:09 ИМХО, костыль.
|