crossplatform.ru

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

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 .....

???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V   1 2 3 >  
Начать новую тему
Ответов (1 - 29)
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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 28.7.2010, 20:49
Сообщение #11


Студент
*

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

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




Репутация:   0  


Это типа с консоли MSYS "собирать" :
MinGW + MSYS :blink: , ужос, я так неделю СкуЛайт собирал, когда в МС Студии писал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.7.2010, 20:51
Сообщение #12


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

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

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




Репутация:   94  


Цитата(potkin @ 29.7.2010, 0:49) *
Это типа с консоли MSYS "собирать" :
из командной строки виндовоза, в окружении Qt, MinGW32 и Firebird.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 28.7.2010, 23:06
Сообщение #13


Студент
*

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

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




Репутация:   0  


 в окружении Qt, MinGW32 и Firebird.

А что значит "в окружении" ???
Прописаны в "PATH" ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonH851
  опции профиля:
сообщение 29.7.2010, 9:59
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 66
Регистрация: 20.2.2010
Из: Шебекино
Пользователь №: 1475

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




Репутация:   0  


Цитата(potkin @ 29.7.2010, 0:06) *
А что значит "в окружении" ???
Прописаны в "PATH" ???


можно использовать для подготовки окружения такой bat Файл(взят где-то из папки с qt):
Цитата
@echo off
rem
rem This file is generated
rem
echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to C:\Qt\2010.02\qt
echo -- PATH set to C:\Qt\2010.02\qt\bin
echo -- Adding C:\Qt\2010.02\bin to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- Adding C:\Firebird_2_1\bin to PATH
echo -- QMAKESPEC set to win32-g++
set QTDIR=C:\Qt\2010.02\qt
set PATH=C:\Qt\2010.02\qt\bin
set PATH=%PATH%;C:\Qt\2010.02\bin;C:\Qt\2010.02\mingw\bin
set PATH=%PATH%;%SystemRoot%\System32
set PATH=%PATH%;C:\Firebird_2_1\bin
set QMAKESPEC=win32-g++

cd c:\qt\2010.02\qt\src\plugins\sqldrivers\ibase

cmd.exe


Пути естественно надо свои указать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.7.2010, 11:03
Сообщение #15


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

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

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




Репутация:   94  


Цитата(potkin @ 29.7.2010, 3:06) *
А что значит "в окружении" ???
Прописаны в "PATH" ???
да.
Смотри пимер, который привёл AntonH851
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 18:03
Сообщение #16


Студент
*

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

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




Репутация:   0  


переименовываем 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

Перепрописал пути.
Ошибок не выдало.
В "C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\ibase" появились файлы/директории:
1) tmp - директория
2) Makefile - файл
3) Makefile.Debug - файл
4) Makefile.Release - файл
5) qsqlibase_resource.rc - файл
6) qsqlibased_resource.rc - файл

а ibase*.dll нигде Нет.

Забыл:
1) tmp - директория - Пустая
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.7.2010, 18:18
Сообщение #17


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

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

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




Репутация:   94  


Цитата(potkin @ 29.7.2010, 22:03) *
а ibase*.dll нигде Нет.
в %QTDIR%/plugins/sqldrivers
должны появится:
qsqlibase4.dll
qsqlibased4.dll

тестируй в
%QTDIR%/demos/sqlbrowser
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 20:26
Сообщение #18


Студент
*

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

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




Репутация:   0  


в %QTDIR%/plugins/sqldrivers
должны появится:
qsqlibase4.dll
qsqlibased4.dll

Нет этих ДЛЛ-ок :unsure:
Подскажите: что делать :( ???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 29.7.2010, 20:48
Сообщение #19


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

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

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




Репутация:   5  


Цитата(potkin @ 29.7.2010, 19:03) *
1) tmp - директория
2) Makefile - файл
3) Makefile.Debug - файл
4) Makefile.Release - файл
5) qsqlibase_resource.rc - файл
6) qsqlibased_resource.rc - файл

А ты make-то выполнил?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 21:02
Сообщение #20


Студент
*

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

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




Репутация:   0  


А ты make-то выполнил?

нет, выполнил "qmake", так как на команду "make" пишет "make не является внутренней или внешней ......."
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 29.7.2010, 21:11
Сообщение #21


Активный участник
***

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

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




Репутация:   2  


Цитата(potkin @ 29.7.2010, 22:02) *
нет, выполнил "qmake", так как на команду "make" пишет "make не является внутренней или внешней ......."

значит надо make поставить(под виндой входит в набор утилит mingw), и после вызова qmake, вызывать make.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 21:35
Сообщение #22


Студент
*

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

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




Репутация:   0  


начит надо make поставить(под виндой входит в набор утилит mingw), и после вызова qmake, вызывать make.

Нашёл "make.exe" в "C:\msys\1.0\bin".
Вот что получилось:
make.jpg

2-е ошибки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.7.2010, 21:39
Сообщение #23


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

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

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




Репутация:   94  


Цитата(potkin @ 30.7.2010, 1:02) *
нет, выполнил "qmake", так как на команду "make" пишет "make не является внутренней или внешней ......."
у MinGW32, она называется mingw32-make.exe
чтобы всякий раз руками так длинно не писать, в каталоге с бинарями MinGW сделай bat-файл с именем make.bat и содержимым:
mingw32-make.exe %*


Цитата(potkin @ 30.7.2010, 1:35) *
Нашёл "make.exe" в "C:\msys\1.0\bin".
Вот что получилось:
make.jpg
ты msys'ом собираешь или MinGW32?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 29.7.2010, 21:43
Сообщение #24


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

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

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




Репутация:   5  


Действительно стоит определиться мингв у тебя или MS Visual Studio.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 22:11
Сообщение #25


Студент
*

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

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




Репутация:   0  


Цитата
ты msys'ом собираешь или MinGW32?

Так МСИС - это только оболочка, а MinGW компилятор. В МСИС прописан путь к МинЖиВИ. Хотя именнов МСИС находится make.exe, а в МинЖиВИ ео нет.

Сборка
пишет:
Как собрать QIBASE плагин под Windows

Ниже полагается, что InterBase или Firebird установлены в C:\interbase:

Если вы используете InterBase:
     cd %QTDIR%\src\plugins\sqldrivers\ibase
     qmake -o Makefile "INCLUDEPATH+=C:\interbase\include" ibase.pro
     nmake

Если вы используете Firebird, то библиотека Firebird должна устанавливаться явно:
     cd %QTDIR%\src\plugins\sqldrivers\ibase
     qmake -o Makefile "INCLUDEPATH+=C:\interbase\include" "LIBS+=-lfbclient" ibase.pro
     nmake

Если вы используете компилятор не от Microsoft, замените nmake на make.

Помните, что C:\interbase\bin должен быть в PATH.


Ладно, юзаю "MinGW"
Запустил в конце "mingw32-make.exe", получил 2-е ошибки:
make.jpg

Цитата
переименовываем fbclient_ms.lib в fbclient.lib

А зачем переименовывать ???

Я обратно имена поменял и создало:
qsqlibased4.dll
qsqlibase4.dll

Всё работает !!!

Всем спасибо за помощь !!!

П.С. С меня пиво, куда выслать :p
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.7.2010, 22:20
Сообщение #26


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

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

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




Репутация:   94  


Цитата(potkin @ 30.7.2010, 2:11) *
А зачем переименовывать ???
потому-что fbclient_ms.lib не соответствует шаблону:
.*fbclient.*
указанному в pro-файле
Цитата(potkin @ 30.7.2010, 2:11) *
Запустил в конце "mingw32-make.exe", получил 2-е ошибки:
make.jpg
он не может выполнить компиляцию, т.к. не видит компилятора g++, о чём тебе и говорит.

П.С. ошибка там одна, а не две
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 29.7.2010, 23:24
Сообщение #27


Студент
*

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

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




Репутация:   0  


Цитата
потому-что fbclient_ms.lib не соответствует шаблону:
.*fbclient.*
указанному в pro-файле

Действительно.
Вообще запутался: у меня не компилирует, если сделать как Вы написали, а если оставить имена файлов такими какими были, то команда "mingw32-make.exe" работает :unsure:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_larry_*
сообщение 6.12.2010, 22:14
Сообщение #28





Гости








    


Цитата(potkin @ 15.7.2010, 16:10) *
Поиск по сайту и в Гугле, дал мне такое:
При компиляции 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 .....

???


время прошло,но может поможет кому-нибудь другому....
#include <QtSql>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 18.1.2013, 21:56
Сообщение #29





Гости








    


Цитата(vadim303 @ 15.7.2010, 16:25) *
не поверишь, #include <QSqlDatabase>
Нщ чаще проще #include <QtSql>

У меня тоже самое, чего то еще надо инсталлировать, нету этих описателей
Обискал и директории mingw(QtCreator) и самого набора языка GNU
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.1.2013, 17:52
Сообщение #30


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

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

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




Репутация:   94  


Если используется модуль QtSql, то его сначала нужно подключить к проекту, для этого в pro-файле нужно добавить строчку
QT += sql
подробности в описании модуля

П.С.
по умолчанию подключены только 2 модуля: QtCore и QtGui
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 16.4.2025, 2:06