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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Berkeley DB и QString  (Прочитано 2074 раз)
levcom
Гость
« : Январь 31, 2012, 15:18 »

Необходимо создать вторичный ключ (индекс) по полю в записи.  для этого создал secondary database с необходимыми атрибутами и ассоциировал ее с первичной базой. И создал функцию для выделения ключа из записи

Код:
int getname (Db *secondary, const Dbt *pkey, const Dbt *pdata, Dbt *skey)
{
    memset(skey, 0, sizeof(DBT));
    Record item;
    QByteArray block((char*)pdata->get_data(), pdata->get_size());
    QDataStream in(&block, QIODevice::ReadOnly);
    in >> item;

    skey->set_data((char*)item.name().data());
    skey->set_size(item.name().capacity() + 1);
    return (0);
}

где Record - класс объекта данных с полем name() типа QString (по которому и создается ключ).

функции поиска по ключу передается также QString
Код:
        Dbt key((char *)value.data(), (u_int32_t)value.capacity() + 1);
        Dbt data;

        int ret = cursorp->get(&key, &data, DB_SET);

Поиск результатов не дает (значение: -30988).

При просмотре ключей из базы возвращает ерунду.

Может кто-нибудь имел дело с Qstring и Berkeley DB.  Непонимающий


Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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