crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Qt. Работа с БД., SQLite
potkin
  опции профиля:
сообщение 15.7.2010, 16:10
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Поиск по сайту и в Гугле, дал мне такое:
При компиляции Qt4 по умолчанию устанавливается только драйвер QSQLITE.
QSQLITE -- SQLite версии не ниже 3;

Для подключения к базе данных надо указать название SQL-драйвера, например:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "MyDB1");

Ошибка:
..\bd\mainwindow.cpp:21: error: 'QSqlDatabase' was not declared in this scope 
..\bd\mainwindow.cpp:21: error: expected ';' before 'db'


Может что-то надо подключить:
#include .....

???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vadim303
  опции профиля:
сообщение 15.7.2010, 16:25
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 14
Регистрация: 18.1.2010
Пользователь №: 1382

Спасибо сказали: 2 раз(а)




Репутация:   0  


не поверишь, #include <QSqlDatabase> :D
Нщ чаще проще #include <QtSql>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.7.2010, 18:52
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


И ещё, модуль QtSql по умолчанию не подключен к проекту. Его нужно добавить в pro-файл:
QT += sql
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 27.7.2010, 12:48
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем спасибо !!!

Ещё вопросик:
Создал БД СкуЛайта "C:\Qt\2010.04\bin\bd\proba.db3", в "SQLite Expert Personal" версии "2.0.43.1861", версия dll СкуЛайта "3.6.16".
Написал код в Qt Creator 2.00:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
   db.setDatabaseName("C:\Qt\2010.04\bin\bd\proba.db3");
   if (!db.open()) {
       QMessageBox::critical(0, qApp->tr("Cannot open database"),
           qApp->tr("Unable to establish a database connection.\n"
                    "This example needs SQLite support. Please read "
                    "the Qt SQL driver documentation for information how "
                    "to build it.\n\n"
                    "Click Cancel to exit."), QMessageBox::Cancel);
   }
   QSqlQuery query(db);
   query.exec("SELECT id, firstname, lastname FROM table");
   QString title;
   while (query.next())
   {
      title += query.value(0).toString()+" - "+query.value(1).toString()+" - "+query.value(2).toString()+"\n";
   }
   ui->tEResul->setText(title);


При "db.open()" получаю ошибку "QMessageBox..."
Когда работаю с ":memory:" то всё работает нормально.
Когда пишу "C#", но надо использовать "sqlite3.dll" с помощью Провайдера. Может и в Qt также надо какой-то провайдер где-то скачать и как-то его использовать ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.7.2010, 13:51
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(potkin @ 27.7.2010, 16:48) *
При "db.open()" получаю ошибку "QMessageBox..."
попробуй открыть эту БД с помощью демки %QTDIR%/demos/sqlbrowser

Цитата(potkin @ 27.7.2010, 16:48) *
Может и в Qt также надо какой-то провайдер где-то скачать и как-то его использовать ???
нет, не надо, только указываешь драйвер и всё.


П.С.
странный подход: валить мусор в каталог с установленной программой (в данном случае БД в каталог с бинарями Qt SDK)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 27.7.2010, 14:16
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Litkevich Yuriy
Спасибо, попробую.

Пока я тока тренируюсь.
Опосля уже и будем "правильно" работать :)

Открывает БД, тоесть всё нормально работает в "%QTDIR%/demos/sqlbrowser".
А у меня не работает, ладно буду дальше мучать Qt Creator ...

Блин !!!
После открытия в "%QTDIR%/demos/sqlbrowser", всё заработало и у меня :blink:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.7.2010, 14:28
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


некоторые инструменты создают довольно странную БД. Которая странно себя ведёт.
Я обычно использую SQLite Database Browser, он не очень удобный, зато созданная в нём БД работает всюду.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 28.7.2010, 19:14
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Перехожу к FireBird, с Вашего позволения, так как не хочу плодить левых тем.
Так как собранный драйвер в Qt только SQLite, то для FireBird его надо собрать.
В "....\qt\src\sql\drivers\ibase\" есть исходники драйвера для InterBase.
Вопросики:
1) Подходят ли они для FireBird ?
2) Собрать драйвер означает: запустить Qt Creator, открыть проект "ibase" и откомпилировать, на выходе получаем "*.dll" ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 28.7.2010, 19:50
Сообщение #9


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Цитата(potkin @ 28.7.2010, 20:14) *
Подходят ли они для FireBird ?

Да
Цитата(potkin @ 28.7.2010, 20:14) *
2) Собрать драйвер означает: запустить Qt Creator, открыть проект "ibase" и откомпилировать, на выходе получаем "*.dll" ?

Нет. В wiki прогорга есть статья как он собирается
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2010, 20:21
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(molchanoviv @ 28.7.2010, 23:50) *
В wiki прогорга есть статья как он собирается
мне в их статье не понравилось, то что они правят pro-файл. И ещё снизу приписка "собираем Qt..." вообще ни к чему. Эта статья больше нужна для статической сборки.
Я плагин собирал так:
переименовываем fbclient_ms.lib в fbclient.lib

cd %QTDIR%\src\plugins\sqldrivers\ibase
qmake -o Makefile "INCLUDEPATH+=F:\Firebird\Firebird_2_1\include" "LIBS+=F:\Firebird\Firebird_2_1\lib\fbclient.lib" ibase.pro
только пути свои запишите, пути должны быть без пробелов! (либо их придётся закавычить, а кавычки заэкранировать)


пример для путей с пробелами:
cd %QTDIR%d\src\plugins\sqldrivers\mysql\
qmake -o Makefile "INCLUDEPATH+=\"F:\MySQL\MySQL Server 5.1\include\"" "LIBS+=\"F:\MySQL\MySQL Server 5.1\lib\debug\libmysql.lib\"" mysql.pro
make
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 15:03