crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> копирование БД (SQLite)
call_me_Frank
  опции профиля:
сообщение 20.12.2011, 8:48
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет! подскажите, пожалуйста, ребята, как осуществить копирование одной БД SQLite в другую (тоже SQLite)?

я сделал так - перечисляю таблицы в одной БД, и пробую переносить по одной записи через QSqlTableModel, вот код:

    for (it = tables.constBegin(); it != tables.constEnd(); ++it){
        //

        QString tn = *it;

        model1.setTable(tn);
        model1.select();

        model2.setTable(tn);
        model2.select();

        for (int j = 0; j < model1.rowCount(); j++){
            //

            QSqlRecord rec = model1.record(j);

            model2.insertRows(j, 1);
            model2.insertRecord(j, rec);

            /*for (int k = 0; k < rec.count(); k++){
                //

                model2.setData(model2.index(j, k),
                               dec(rec.value(k).toString()));
            }*/
        }

        model2.submitAll();
    }


однако, этот код не работает, почему, я не могу понять.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
crashsp
  опции профиля:
сообщение 20.12.2011, 20:20
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 23.10.2010
Пользователь №: 2144

Спасибо сказали: 8 раз(а)




Репутация:   546  


На мой взгляд не самый правильный подход в цикле делать setTable(tn) потом select() для двух таблиц; а потом опят же в цикле insertRecord(j, rec) по одной записи.
думаю лучше руками через QSqlQuery получить данные, засунуть их QStringList и отправить одним пакетом, см bool QSqlQuery::execBatch ( BatchExecutionMode mode = ValuesAsRows )
Но все же если решите делать как делали посмотри исходник может чего не хватает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
call_me_Frank
  опции профиля:
сообщение 21.12.2011, 8:45
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 73
Регистрация: 20.10.2010
Пользователь №: 2129

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, crashsp!...свой исходник я все-таки запустил, нашел почему не работало. Сейчас оставлю этот вариант, а на будущее обязательно посмотрю, что за execBatch такой)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 10:14