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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: SQLite бд и Qt  (Прочитано 13660 раз)
dima123
Гость
« : Март 10, 2011, 22:09 »

Помогите подключить созданную в acces бд простейшим способом
версия qt последняя.
« Последнее редактирование: Март 19, 2011, 13:39 от dima123 » Записан
ieroglif
Гость
« Ответ #1 : Март 10, 2011, 22:30 »

глянь маны по QSqlDatabase в сторону QODBC драйвера.
там где-то даже пример был
Записан
GraninAS
Гость
« Ответ #2 : Март 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 и драйвер.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #3 : Март 11, 2011, 08:23 »

Если есть возможность, не используй БД access, так как она дурацкая. SQLite намного лучше.
Записан

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

Код:
QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="
sDatabaseName.append(ПУТЬ К ФАЙЛУ БАЗЫ);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(sDatabaseName );

И еще кстати в последней версии Qt необходимо её собрать.
Если есть возможность, не используй БД access, так как она дурацкая. SQLite намного лучше.

И таки да - не используй.
Записан
dima123
Гость
« Ответ #5 : Март 11, 2011, 16:43 »

QString sDatabaseName = "DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="sDatabaseName.append("D:\db1.mdb");
не компилит
а как собрать?
а  SQLite бд, в примере сохраняется в папке с проектом?и чем её можно открыть?
Записан
Drafter
Гость
« Ответ #6 : Март 12, 2011, 11:57 »

Цитировать
а  SQLite бд, в примере сохраняется в папке с проектом?и чем её можно открыть?

Вся SQLite база хранится в одном файле. Где он расположен - не принципиально. Открыть (создать) можно, к примеру, с помощью SQLite Expert.
« Последнее редактирование: Март 12, 2011, 12:00 от Drafter » Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #7 : Март 12, 2011, 12:05 »

помощью SQLite Expert.
Проприетарщина...

есть опенсорс тулзы.
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #8 : Март 12, 2011, 15:07 »

SQLite база и таблицы в ней отлично создаются средствам Qt.
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #9 : Март 12, 2011, 16:35 »

SQLite база и таблицы в ней отлично создаются средствам Qt.

Я так и делаю. Просто некоторые могут не уметь или предпочитать GUI дизайнер.
Записан
Maquefel
Гость
« Ответ #10 : Март 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=";
sDatabaseName.append("D:\db1.mdb");
Точку с запятой забыл.

Собрать:
заходишь в {$QTDIR}
cd src\plugins\sqldrivers\odbc
qmake
mingw32-make
mingw32-make install

если mingw иначе cmake по-моему
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


Просмотр профиля WWW
« Ответ #11 : Март 14, 2011, 10:11 »

nmake. cmake это другое.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
dima123
Гость
« Ответ #12 : Март 19, 2011, 12:50 »

спасибо, работаю с SQLite
интересует вопрос , как в запрос передать не значения, а переменную
например:
int a=1;
QString b="asd";
model->setQuery("insert into tables values(как тут переменные записуються?)");
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #13 : Март 19, 2011, 14:44 »

Почитать документацию. Там всё расписано.
Записан
dima123
Гость
« Ответ #14 : Март 20, 2011, 18:23 »

сделал.
теперь передаю в запрос русские слова,а заносятся в таблицу крякозярбы
query.exec("insert into a values(1, 'апролллджє', '100')");
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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