Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QtCreator+MySql/(XP&Linux)/сборка и работа с lib(dll)?
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
sasa
Добрый день-вечер-ночь!

Задача и проблема:
!!! запустить проект под windows и linux (просто перекомпилируя исходники в ОС)...
(при работе без базы всё было прекрасно... , но нужно брать ещё и из неё данные)

Исходные данные:
1) машина XP SP3 (c сетью) и установленным клиентом MySql 5.5 и QTCreator 2.4.1 (от 1 февраля 2012)
2) машина под Linux(Debian) (c сетью) и QTCreator(базу видит).
3) и отдельная машина с БД MySql5.

А теперь вопорс(ы):
Как же всё-таки собрать библиотеку под XP для MySql (по всем гайдам теперь таких путей нет!!!)?
Я на всё согласен: mingw или msvc (есть и MVS2010(SP1) если нужно) ---> скажите только как...
Может иначе инсталить QT4 (согласен писать под XP из под MVS2010 а не Creator - опыт есть и там и там)...

Главное чтоб в исходиках #include <mysql.h> полнималось и в XP и в Linux при компиляции и
запускались выполняемые файлы соответственно. Может у кого есть примеры - буду очень рад...

Спасибо!



good_game
Sasa, строку типа #include <mysql.h> у тебя в коде быть не должно, если ты пишешь в QtCreator. В Qt есть отличные классы для работы с базами данных (QSqlDatabase, QSqlQuery и т д). Им просто подсовываешь нужные драйверы и необходимость вникать в тонкости работы с конкретной СУБД пропадает. Это бывает в специальных случаях, но не в тех, когда работают с MySQL :) .
Я делал вот как:
1) компилируем драйвер. По этому вопросу гайдов найдёшь много. Возможно немного помучаешься, но задача в целом несложная. Для мускуля должны получиться файлы: libqsqlmysql4.a, libqsqlmysqld4.a, qsqlmysql4.dll, qsqlmysqld4.dll. Думаю тут объяснять не нужно какой файл для чего.
2) Вот код для создания соединения:
    db = QSqlDatabase::addDatabase("QMYSQL"); // Вот место, где ты указываешь драйвер. В данном случае я указал Мускуль. Будет другой сервер - укажешь другой
    db.setHostName(host);
    db.setDatabaseName(dbname);
    db.setUserName(user);    
    db.setPassword("");    

    if (!db.open())
    {
        QMessageBox::critical( // Не получилось соежиниться
            parent,                      
            QObject::tr("Database Error"),
            db.lastError().text());          // А здесь причина, по которой не удалось соединиться.
        exit(0);

    }


3) в директорию с прогой кидаешь libmySQL.dll соответствующей версии.

4) И последний совет: когда прогу скомпилируешь и будешь тестить на машине, на которой Qt не стоит, то в диретории, где лежит прога, создаёшь папку "sqldrivers", в неё кидаешь файл "qsqlmysql4.dll". Звучит как бред, но без этого не работает иногда. Причину не знаю.

Удачи.
sasa
Спасибо, good_game!
Насчет include конечно так = +Sql !
В том и дело, что пока даже собрать под XP не могу (я не спец по "сделай сам") -
гайды теперь не рабочие... пути поменялись, файлы изменились и многих теперь нет!
Пока ушел чисто на Linux - там как-то работает...
sasa
Все заработало в XP.

/sqldrivers - бред конечно..., но работает!!!

Спасибо большое!
good_game
Про sqldrivers оказалось не бред. Оказывается это один из путей, где программа по-умолчанию ищет драйвера для SQL-серверов. То есть в принципе драйвера можно не в эту папку кидать, а в системные директории и прога её найдёт (лишь бы в PATH был соответствующий путь прописан).
Кстати, аналогичным образом программа, сделанная в QT может искать плагины для чтения ICO, GIF и других файлов картинок в директории imageformats. В частности там прога может искать qgif4.dll, qico4.dll, qjpeg4.dll и т д.
Так что никакой магии, всё логично.
Litkevich Yuriy
Цитата(sasa @ 25.5.2012, 13:24) *
/sqldrivers - бред конечно..., но работает!!!
прочитай, пригодится
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.