Russian Qt Forum
Сентябрь 09, 2010, 15:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
(Модератор:
Sergeich
) >
Транзакции Interbase
Страниц:
1
[
2
]
3
4
...
11
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Транзакции Interbase (Прочитано 10403 раз)
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 2778
Re: Транзакции Interbase
«
Ответ #15 :
Февраль 10, 2009, 20:27 »
тогда я нумер два
Записан
Юра.
vipet
Частый гость
Offline
Сообщений: 277
Re: Транзакции Interbase
«
Ответ #16 :
Февраль 10, 2009, 21:06 »
Третий не знаю кто, а я - четвертый. Щяс заценим
Записан
vipet
Частый гость
Offline
Сообщений: 277
Re: Транзакции Interbase
«
Ответ #17 :
Февраль 10, 2009, 21:51 »
Вобщем, что касается взаимодействия с IBPP, то у меня практически всё то же самое. (Это и немудрено, т.к. как я грил раньше, работать с либой просто
http://www.ibpp.org/reference
)
Отличие пока увидел при чтении блоба: можно читать максимальными кусками (используя void Blob::Info(int* size, int* largest, int* segments), а не по килобайту
у ахах'а:
Код:
IBPP::Blob l_Blob = IBPP::BlobFactory(rp->iDb, rp->iTr);
rp->iSt->Get(i, l_Blob);
QByteArray l_QBlob;
l_Blob->Open();
int l_Read, l_Offset = 0;
char buffer[1024];
while ((l_Read = l_Blob->Read(buffer, 1024)))
{
l_QBlob.resize(l_QBlob.size() + l_Read);
memcpy(l_QBlob.data() + l_Offset, buffer, l_Read);
l_Offset += l_Read;
}
l_Blob->Close();
row[idx] = l_QBlob;
break;
у меня:
Код:
IBPP::Blob blob = IBPP::BlobFactory(m_Database->getIBPPDB(),
m_Transaction->getIBPPTransaction());
m_Statement->Get(FieldNum, blob);
blob->Open();
int bytesTotal;
int largestChunkSize;
int segmentsTotal;
int chunkSize;
int bytesRead = 0;
blob->Info(&bytesTotal, &largestChunkSize, &segmentsTotal);
data->resize(bytesTotal);
do
{
chunkSize = (bytesTotal - bytesRead) < largestChunkSize ?
(bytesTotal - bytesRead) : largestChunkSize;
bytesRead = blob->Read((void*)data->data(), chunkSize);
} while (bytesTotal != bytesRead);
blob->Close();
Также запись в блоб я сделал через Blob::Write(), а не через Statement::Set(). Не знаю лучше это или хуже (на момент написания просто не заметил, что блоб писать можно через Statement::Set()). В Blob::Write() можно писать чанками до 32-х килобайт (ограничение фиребёрда)
Записан
ax
Новичок
Offline
Сообщений: 49
Re: Транзакции Interbase
«
Ответ #18 :
Февраль 11, 2009, 15:37 »
Привет.
Изменил чуть проект для сбоки с компиляторами Microsoft и выложил собранный драйвер под VC 6.0 и 2008.
vipet
. Твой вариант с блобом надо пробывать. Насколько помню был нюанс под linux.
http://code.google.com/p/qtfirebirdibppsqldriver
Записан
c00ker
Новичок
Offline
Сообщений: 33
Re: Транзакции Interbase
«
Ответ #19 :
Февраль 18, 2009, 13:49 »
Спасибо за выложенный труд, я уже с Firebird на последних версиях Qt затрахался. До этого пользовался 4.2.2 с QODBC, кодировка базы CP1251 и все было ок. На последних версиях Qt в этом же проекте при вводе данных все преобразуется в уникод, хз в чем проблема, может и в драйвере ODBC птицы.
Попробовал этот драйвер, заметил, что numRowsAffected возвращает все время -1. Версия Firebird-2.1.1.17910-0, Qt4.4.3. Чуть поменял кусок в драйвере (закомментил две строчки), заработало вроде
Код:
int QFBResult::numRowsAffected()
{
int nra = -1;
//if (isSelect())
// return nra;
try
{
nra = rp->iSt->AffectedRows();
}
catch (IBPP::Exception& e)
{}
return nra;
}
«
Последнее редактирование: Февраль 18, 2009, 14:16 от c00ker
»
Записан
Константин
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2421
Re: Транзакции Interbase
«
Ответ #20 :
Февраль 18, 2009, 14:48 »
c00ker, зачем закомментировал? там всё правильно
numRowsAffected должен возвращать -1 для селектов. а ты, похоже, говоришь про querySize
Записан
4.7
Gentoo ~amd64 / winxpprosp2 / fremantle armel
Qt - Qt Development Frameworks; QT - QuickTime
c00ker
Новичок
Offline
Сообщений: 33
Re: Транзакции Interbase
«
Ответ #21 :
Февраль 18, 2009, 15:17 »
Ну да, похоже нужно было комментить ф-ию QFBResult::size()
Код в size():
Код:
int QFBResult::size()
{
int nra = -1;
return nra;
...
Записан
vipet
Частый гость
Offline
Сообщений: 277
Re: Транзакции Interbase
«
Ответ #22 :
Февраль 18, 2009, 18:07 »
Немного оффтопа:
А разве Firebird возвращает кол-во строк для SELECT-запроса? Т.е. разве можно узнать кол-во записей, пока все их не считали?
Записан
Dimich
Новичок
Offline
Сообщений: 13
Re: Транзакции Interbase
«
Ответ #23 :
Май 09, 2009, 18:21 »
axax
,
можете ли перелицензировать qtfirebirdibppsqldriver под LGPL или двойной LGPL/GPL лицензией?
Записан
gigabyte
Чайник
Offline
Сообщений: 70
Re: Транзакции Interbase
«
Ответ #24 :
Январь 21, 2010, 10:36 »
Уже достаточно давно пользуюсь Qt IPBB Sql Driver (
http://code.google.com/p/qtfirebirdibppsqldriver/
). Постил на его страчинчку несколько предложений, и не я один, но вижу что давно не было ответов и работ. Нашел здесь на форуме сообщение чтоб по вопроам обращатся сюда. Вот и обращаюсь. Может кто подскажет судьбу этого проекта, он жив или уже нет?
Записан
ax
Новичок
Offline
Сообщений: 49
Re: Транзакции Interbase
«
Ответ #25 :
Январь 21, 2010, 11:29 »
Цитата: gigabyte от Январь 21, 2010, 10:36
Уже достаточно давно пользуюсь Qt IPBB Sql Driver (
http://code.google.com/p/qtfirebirdibppsqldriver/
). Постил на его страчинчку несколько предложений, и не я один, но вижу что давно не было ответов и работ. Нашел здесь на форуме сообщение чтоб по вопроам обращатся сюда. Вот и обращаюсь. Может кто подскажет судьбу этого проекта, он жив или уже нет?
Проект в зимней спячке
Постараюсь до понедельника добраться.
Спасибо за предложения.
По обновлению напишу сюда.
Записан
gigabyte
Чайник
Offline
Сообщений: 70
Re: Транзакции Interbase
«
Ответ #26 :
Январь 21, 2010, 12:55 »
если надо я тоже мог бы подключится и немного попостить туда на google code
Записан
ax
Новичок
Offline
Сообщений: 49
Re: Транзакции Interbase
«
Ответ #27 :
Январь 25, 2010, 19:13 »
Свежая версия
Qt SQL driver for Firebird with IBPP library
.
http://code.google.com/p/qtfirebirdibppsqldriver
Изменения в версии 0.14
- fixed ASSERTION in qsqlcachedresult when calling stored procedure (Issue 1)
- fixed bug when blob contains '\0' char (Issue 2)
+ Add support of firebird ROLE (Issue 3)
+ change in IbppDriver.pro for support debug and release builds (Issue 4)
- fixed bug when only "NONE" and "WIN1251" charset is set (Issue 5)
- compile warnings
Внимание: кодировка по умолчанию изменена на "NONE"
Также свежие сборки под Qt 4.6.1
gcc 4.4
http://qtfirebirdibppsqldriver.googlecode.com/files/qsqlfb_gcc_4.6.1.zip
MS Visual C++ 2008
http://qtfirebirdibppsqldriver.googlecode.com/files/qsqlfb_2008_4.6.1.zip
Спасибо за пожелания и исправления.
Новые принимаются на
http://code.google.com/p/qtfirebirdibppsqldriver/issues/list
и на форуме.
P.S.
Цитата: gigabyte от Январь 21, 2010, 12:55
если надо я тоже мог бы подключится и немного попостить туда на google code
- написал в личку
«
Последнее редактирование: Январь 25, 2010, 23:47 от axax
»
Записан
xokc
Самовар
Offline
Сообщений: 153
Re: Транзакции Interbase
«
Ответ #28 :
Январь 25, 2010, 19:58 »
А ссылки на gcc и msvc версии одинаковы случайно или так и должно быть?
Записан
ax
Новичок
Offline
Сообщений: 49
Re: Транзакции Interbase
«
Ответ #29 :
Январь 25, 2010, 23:48 »
Цитата: xokc от Январь 25, 2010, 19:58
А ссылки на gcc и msvc версии одинаковы случайно или так и должно быть?
Упс...
Исправил.
Спасибо.
Записан
Страниц:
1
[
2
]
3
4
...
11
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Пользовательский интерфейс (GUI)
=> Model-View-Controller (MVC)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование
=> Мультимедиа
=> 2D и 3D графика
=> Интернационализация, локализация
=> XML
=> Печать
=> Qt Script
=> ActiveX
=> Установка, сборка, отладка, тестирование
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
=> Общие вопросы
=> Уроки и статьи
=> Вопросы новичков
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Мультимедия
=====> Python
=====> Delphi
=====> GTK
=====> Другие GUI библиотеки
===> Веб программирование
=====> PHP, PERL, CGI
=====> JavaScript
=====> WebDesign and all
Загружается...