Russian Qt Forum

Qt => Базы данных => Тема начата: detka от Май 13, 2009, 22:09



Название: Как правильно организовать цикл по таблице
Отправлено: detka от Май 13, 2009, 22:09
Добрый день.
Проблема такая: нужно пробегать построчно существующую таблицу и используя ее данные создавать новую с помощью запроса "create..." .
Не совсем понимаю как лучше организовать цикл и как передавать в запрос считанные данные.

Заранее спасибо


Название: Re: Как правильно организовать цикл по таблице
Отправлено: break от Май 14, 2009, 01:27
Вам нужно создать таблицу на основе существующей?
Или заполнить данными на основе существующей?
Или все вместе?

Первое не знаю точно но врят ли получится т.к. кроме названия полей в БД таблицах есть первичные, вторичные ключи, индексы и т.д. - эту информацию врят ли через Qt драйвер вытащишь...

Второе легче:
только там нужен Insert а не Create
читаем всю таблицу:
Код:
QSqlQuery query("select val1, val2, valN from TABLE");
query.exec();
QSqlRecord rec = query.record();

проходим по нй и вставляем в другую:
Код:
QSqlQuery insQuery;
insQuery.prepare("insert into NEW_TABLE(val1, val2, valN) values(:val1, :val2, :valN)");

while (query.next())
{
  insQuery.bindValue(":val1", query.value( rec.indexOf("val1") ) );
  insQuery.exec();
}
и т.д.

P.S. код не проверял - так для примера


Название: Re: Как правильно организовать цикл по таблице
Отправлено: detka от Май 14, 2009, 06:09
Делаю что то вроде Database desktop в Builder, т.е. пользователь  заполняет поля: имя поля, тип, размер и т.д., я заношу эти данные во временную таблицу, дальше считываю построчно и создаю новую


Название: Re: Как правильно организовать цикл по таблице
Отправлено: break от Май 14, 2009, 12:37
т.е. заносите столбцы будущей таблицы в строки временной - сов всякими указаниями Not Null и тд.д. - тогда также пройдите по всем строкам как в примере выше и заполните запрос CREATE TABLE