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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как скомпилировать драйвер Firebird&  (Прочитано 19284 раз)
echo
Гость
« : Апрель 25, 2008, 08:33 »

Имеется qt-win-opensource-src-4.2.3, MSVC2005, acs-4.2.3-patch1, qt-vsintegration-1.2.2.
Устанвливал qconfigure msvc2005 потом nmake.

Имеется текст программы которая работает с sqlite:

Код:
#include <QtSql>
static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("addressbook");

    db.setUserName("elton");
    db.setHostName("epica");
    db.setPassword("password");
    if (!db.open()) {
        qDebug() << "Cannot open database:" << db.lastError();
        return false;
    }
    return true;
}

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QCoreApplication app(argc, argv);

    if (!createConnection()) {
        return -1;
    }
   
    //Creating of the data base
    QSqlQuery query;
    QString   str  = "CREATE TABLE addressbook ( "
                         "number INTEGER PRIMARY KEY NOT NULL, "
                         "name   VARCHAR(15), "
                         "phone  VARCHAR(12), "
                         "email  VARCHAR(15) "
                     ");";

    if (!query.exec(str)) {
        qDebug() << "Unable to create a table";
    }

    //Adding some information
    QString strF =
          "INSERT INTO  addressbook (number, name, phone, email) "
          "VALUES(%1, '%2', '%3', '%4');";

    str = strF.arg("1")
              .arg("Piggy")
              .arg("+49 631322187")
              .arg("piggy@mega.de");
    if (!query.exec(str)) {
        qDebug() << "Unable to do insert opeation";
    }

    str = strF.arg("2")
              .arg("Kermit")
              .arg("+49 631322181")
              .arg("kermit@mega.de");
    if (!query.exec(str)) {
        qDebug() << "Unable to do insert operation";
    }

    if (!query.exec("SELECT * FROM addressbook;")) {
        qDebug() << "Unable to execute query - exiting";
        return 1;
    }

    //Reading of the data
    QSqlRecord rec     = query.record();
    int        nNumber = 0;
    QString    strName;
    QString    strPhone;
    QString    strEmail;

    while (query.next()) {
        nNumber  = query.value(rec.indexOf("number")).toInt();
        strName  = query.value(rec.indexOf("name")).toString();
        strPhone = query.value(rec.indexOf("phone")).toString();
        strEmail = query.value(rec.indexOf("email")).toString();
   
        qDebug() << nNumber << " " << strName << ";\t"
                 << strPhone << ";\t" << strEmail;
    }

    return 0;
}

Как скомпилировать драйвер qibase (описать как можно подробней) и как подправит программу чтоб она работала с огнептицей???

Пользуемся тегами КОД!
 
« Последнее редактирование: Апрель 25, 2008, 12:49 от pastor » Записан
BaltikS
Гость
« Ответ #1 : Апрель 25, 2008, 12:29 »

Да скомпилировать просто, указываешь пути в переменных окружения include и lib на пути FireBird  и в путь...
У меня другой вопрос... Юзаю Файербёд 1 и 1.5 драйвер собрался и работает. Ну криво работает! Все надписи на русском, всё нормально. Но проблемма в следующем, что данные из таблиц выдаются не все, а из некоторых - вообще ничего не возвращается. Кто сталкивался с подобной проблеммой, подскажите...как быть?
Записан
crossly
Гость
« Ответ #2 : Апрель 25, 2008, 17:42 »

Код:
qmake "INCLUDEPATH+=<путь к fb>\include" "LIBS+=-L<fb path>\lib\firebird_ms\lib" ibase.pro
nmake

по поводу второго вопроса ... проверь в какой кодировке хранятся данные в бд.. и какую использует qt...
Записан
ритт
Гость
« Ответ #3 : Апрель 25, 2008, 18:24 »

я пользую огнептиц 2.0 и 2.1 - недовыбранных данных не наблюдал
Записан
Вячеслав
Гость
« Ответ #4 : Апрель 25, 2008, 21:51 »

Таки тафай-те ка подробнее Подмигивающий
1) чего на базе кажет gstat ?
2) как цепляемся к базе ?
3) Индексы все живы ?
4) тот-же запрос через IBE например - что выдаст ?
Записан
Tonal
Гость
« Ответ #5 : Апрель 28, 2008, 07:35 »

2 BaltikS Кстати да, проверь корректность базы.
Или ты с SQL-ем не дружишь, или база убитая. Подмигивающий
Записан
BaltikS
Гость
« Ответ #6 : Апрель 28, 2008, 21:07 »

Расказываю...
Поставил Огнептиц 1.0, а затем 1.5. С ним же скомпилил дрова... Захожу в стандартный пример SqlBrowser, произвожу коннект. Смотрю таблицы. В таблице где порядка 20000 записей показывается только 3!!!!! Где порядка 300 - 8 записей, где около 30 - все показываются! При этом индексы все в норме. ИБ эксперт всё подгружает нормально, а тут такая засада? Что делать, кто подскажет???
Записан
Вячеслав
Гость
« Ответ #7 : Апрель 28, 2008, 23:20 »

Эта .... однако чудес не бывает Грустный
Какой клиент юзает кутя и какой ibe ?
все-таки че gstat кажет ?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Апрель 29, 2008, 06:03 »

записи, которые не показывает Qt'я содержат русский текст?
а записи, которые  показывает?
Записан

Юра.
Tonal
Гость
« Ответ #9 : Апрель 29, 2008, 07:02 »

А FB 1.x ты по каким соображениям используешь?
Вроде уже давно 2.0.х в релизах, а недавно 2.1 вышел.
Записан
crossly
Гость
« Ответ #10 : Апрель 29, 2008, 21:06 »

ежели записи на русском языке советую все же поигратся с кодировкой....
Записан
BaltikS
Гость
« Ответ #11 : Апрель 30, 2008, 07:36 »

- 1 FireBird использую потому что требование такое заказчика...
- Из за своей неопытности работы на нём я не знаю что такое gstat. Если можно просвятите...
- Кодировка в базе CP1251. И выбираются только русские записи. И среди выбранных тоже русские....
- Пробовал с ODBC- драйвером, вообще ничего не выбирается. Но если убрать кодировку WIN1251, то всё выбирается, но в какой то непонятной мне кодировке....
- с каким клиентом работает ИБЭксперт я не знаю... Со своим наверное видимо...
________________________________________________________________________
У меня вопрос, а если взять FB 2 и SDK и скомпилить драйвер к нему? И клиента его же. Будет ли он работать с FB 1? Я полагаю что должен, чем и займусь после праздников, экспериментами!!!
Записан
Alex03
Гость
« Ответ #12 : Апрель 30, 2008, 08:14 »

Может отсюда чего полезного вычитаете.
Помимо кодировки БД (всей и отдельных полей) ещё бывает кодировка клиента, т.е. клиент преобразовывает данные БД в указанную ему кодировку.
Когдато была у меня проблема... Не помню в какой комбинации, но в одном месте размер полей считался в символах, в другом в байтах, что для кодировки UTF-8 (UNICODE_FSS) не является правильным...

Если у Вас чёнить типа
Код:
select ID from table
выполняется нормально то дело в кодировках и т.д.
Записан
Tonal
Гость
« Ответ #13 : Апрель 30, 2008, 09:31 »

Клиент от FB2 с 1-кой работать будет, причём даже несколько быстрее. Улыбающийся
IBExpert писан на delphi и работает через Fib+.
У меня проблем с кодировками не было, хотя базы тоже в win1251 были.

Кстати, Qt 4.2.3 - это тоже требования заказчика?
Сейчас вышел редиз 4.4.0.
Предыдущий релиз 4.3.4
Начиная с 4.3.2 MSVC поддерживается в Open Source версии.
Если мне склероз не изменяет, как-то недавно троли правили свой драйвер Interbase/Firebird как раз относительно Firebird-а.
Так что есть резон обновить версию. Улыбающийся
Записан
Вячеслав
Гость
« Ответ #14 : Апрель 30, 2008, 15:48 »

- 1 FireBird использую потому что требование такое заказчика...
- Из за своей неопытности работы на нём я не знаю что такое gstat. Если можно просвятите...
- Кодировка в базе CP1251. И выбираются только русские записи. И среди выбранных тоже русские....
- Пробовал с ODBC- драйвером, вообще ничего не выбирается. Но если убрать кодировку WIN1251, то всё выбирается, но в какой то непонятной мне кодировке....
- с каким клиентом работает ИБЭксперт я не знаю... Со своим наверное видимо...
________________________________________________________________________
У меня вопрос, а если взять FB 2 и SDK и скомпилить драйвер к нему? И клиента его же. Будет ли он работать с FB 1? Я полагаю что должен, чем и займусь после праздников, экспериментами!!!
1) именно 1? а не 1.5x ??
2) утилитка идет вместе с птицем и показывает состояние базы
3) ODBC - нафиг лучше RTFM асистента
Цитировать
QIBASE Unicode Support and Text Encoding
By default the driver connects to the database using UNICODE_FSS. This can be overridden by setting the ISC_DPB_LC_CTYPE parameter with QSqlDatabase::setConnectOptions() before opening the connection.
    // connect to database using the Latin-1 character set
    db.setConnectOptions("ISC_DPB_LC_CTYPE=Latin1");
    db.open();
соответственно пихать то, в чем реально база ....
4) про клиента от 2 Tonal уже сказал
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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