Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Steklova Olga |
5.4.2012, 20:21
Сообщение
#21
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4
|
Litkevich Yuriy, просмотрела кучу тем на prog.org.ru и crossplatform.ru.
Не про эту ли тему на prog.org Вы говорили? Ответ пока не нашла. Драйверы пока-что сама не писала. Пока гуглила, нашла полезную для себя cсылку: Link |
|
|
|
|
Steklova Olga |
18.4.2012, 11:59
Сообщение
#22
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4
|
Цитата(Алексей1153 @ 16.3.2012, 11:09) Link из-под Qt я с базами не работал. Насколько подсказывает гугл, нужно что-то вроде Цитата void QSqlQuery::bindValue ( const QString & placeholder, const QVariant & val, QSql::ParamType paramType = QSql::In ) QSqlQuery s; s.prepare( QString( "update TABLE set FIELD=:marker where ... " ) ); s.addBindValue( QVariant (myStdString.c_str()), QSql::In/*|QSql::Binary*/ ); s.exec( ); кстати, QVariant умеет и с QString работать - попробуй сразу оттуда возможно, понадобится флаг QSql::Binary в общем, в любом случае -если таким образом записать из QString в двоичный блоб,а потом так же считать, то содержимое QString должно восстановиться аки птицо Феникс, независимо от кодировок Алексей1153, спасибо Вам большое за поддержку, оказывается, все элементарно 1. я отказалась от использования текстового блоба, так как не разбираюсь в драйверах. 2. изменила скрипт, остановившись на использовании двоичного блоба: 3. Использовала подготовленный запрос: 4. Все эти варианты работают: 5. А ошибки продолжали вылезать тогда, когда я только начала тестировать использование двоичного блоба, не из-за двоичного блоба, а из-за того, что в то время у меня и в таблице БД оставалось обязательное поле текстового блоба, и в подготовленном запросе вместе с указанием двоичного блоба я ПРОДОЛЖАЛА УКАЗЫВАТЬ ПОЛЕ ТЕКСТОВОГО БЛОБА, которое и вызывало ошибку. Слонов надо есть по частям! |
|
|
|
|
Алексей1153 |
18.4.2012, 12:16
Сообщение
#23
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
ещё мне что-то подсказывает, что более рационально задавать сегмент размером , равным степени двойки. К примеру, не 500, а 512
|
|
|
|
|
Steklova Olga |
18.4.2012, 13:10
Сообщение
#24
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4
|
Алексей1153, да, наверное.
В книге Хелен Борри "Firebird. Руководствоо разработчика баз данных" на стр 223 в главе 12 "BLOB и массивы" нашла следующие слова: Цитата "Сегменты BLOB. Если страницы с содержимым BLOB хранят только данные BLOB и там нет никакой вспомогательной информации (в книге я не нашла подтверждения этого), то Вы правы.
Данные BLOB... хранятся в виде сегментов на одной или более страницах базы данных. ...Когда это возможно, BLOB сохраняются на той же странице, что и запись с остальными данными. При этом большие BLOB могут занимать много страниц, а их начальные страницы могут содержать не данные, а массив указателей на страницы с содержимым BLOB." |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 24.12.2025, 18:23 |