Russian Qt Forum

Qt => Базы данных => Тема начата: DpoHro от Май 24, 2009, 00:46



Название: Как Вы храните данные полученные из БД?
Отправлено: DpoHro от Май 24, 2009, 00:46
Как лучше хранить данные полученные из БД, оставлять в QSqlQuery или перекидывать в свои структуры?
Раньше оставлял в QSqlQuery, но как то это выглядит ущербно в том плане, что доступаться до полей нужно используя громоздкие конструкции, с другой стороны, если описывать свои структуры, то при редактировании структур таблиц нужно вносить изменения и в свои клиентские структуры.
Кроме того, нужно иметь возможность обмениваться между классами наборами этих данных, что в случае с QSqlQuery также выглядит немного неправильно. Поменял название поля и ищи по коду где им пользовался.

Извиняюсь за не достаточную проблемность вопроса, но интересно как храните данные Вы?


Название: Re: Как Вы храните данные полученные из БД?
Отправлено: break от Май 24, 2009, 01:05
в основном в QSqlQuery если не требуется отдельная обработка или повышенная производительность - а что вы называете громоздкой конструкцией доступа к полям?

я так делаю

Код:
QSqlQury query;
//........
//.... открыт и с данными
QSqlRecord rec = query.record();

int nID = query.value( rec.indexOf("ID") ).toInt();
QString sComment = query.value( rec.indexOf("COMMENT") ).toString();

если обращение к столбца идет несколько раз можно еще и сохранить их индексы в наборе данных типа:

Код:
int nIDX_ID = rec.indexOf("ID");
int nIDX_ID = rec.indexOf("COMMENT");

а дальше также обращаться

Код:
query.value( nIDX_ID ).toInt();
query.value( nIDX_ID ).toInt();

вроде не громоздкие? - когда то в дельфи датасетах работал с FieldByName - можно и что-то подобное написать... но мне каж. это и не нужно


Название: Re: Как Вы храните данные полученные из БД?
Отправлено: majatu от Июнь 10, 2009, 10:46
QSqlQueryModel , а дальше юзай указатель на него


Название: Re: Как Вы храните данные полученные из БД?
Отправлено: roman.ks от Июнь 11, 2009, 14:38
В зависимости от то, что вы в последствии с этими данными собираетесь делать можно поступить несколькими способами:
1. Если данные используются в осном для отображения и простенькая логика, тогда логичнее использовать модели
2. Если будет накручена сложная бизнес-логика, то тогда лучше в свои структуры выгружать. Но для этих целей C++ не очень подходит ( точнее вообще не подходит ).

Мне кажестся, что в вашем случае больше подходит вариант 1.