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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как правильно организовать цикл по таблице  (Прочитано 3144 раз)
detka
Гость
« : Май 13, 2009, 22:09 »

Добрый день.
Проблема такая: нужно пробегать построчно существующую таблицу и используя ее данные создавать новую с помощью запроса "create..." .
Не совсем понимаю как лучше организовать цикл и как передавать в запрос считанные данные.

Заранее спасибо
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Май 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. код не проверял - так для примера
Записан
detka
Гость
« Ответ #2 : Май 14, 2009, 06:09 »

Делаю что то вроде Database desktop в Builder, т.е. пользователь  заполняет поля: имя поля, тип, размер и т.д., я заношу эти данные во временную таблицу, дальше считываю построчно и создаю новую
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Май 14, 2009, 12:37 »

т.е. заносите столбцы будущей таблицы в строки временной - сов всякими указаниями Not Null и тд.д. - тогда также пройдите по всем строкам как в примере выше и заполните запрос CREATE TABLE
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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