Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 29.09.2020, 20:07   #1
FireVois
Новичок
Джуниор
 
Регистрация: 22.03.2017
Сообщений: 3
По умолчанию SQLite сохранить базу в файл

Здравствуйте. Учусь программировать и осваиваю БД. Подскажите пожалуйста, как можно сохранить базу данных SQLite v3 в формат .sql для дальнейшей загрузки в такую же базу. Нужно для сохраниея текущего состояния.
FireVois вне форума Ответить с цитированием
Старый 29.09.2020, 23:24   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,266
По умолчанию

https://www.sqlitetutorial.net/sqlite-dump/
waleri вне форума Ответить с цитированием
Старый 01.10.2020, 14:20   #3
FireVois
Новичок
Джуниор
 
Регистрация: 22.03.2017
Сообщений: 3
По умолчанию

Да но это делается из командной строки, а без нее можно как то? Средствами С++.
FireVois вне форума Ответить с цитированием
Старый 01.10.2020, 19:19   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,266
По умолчанию

Скачайте исходники SQLite да посмотрите как это сделано...
waleri вне форума Ответить с цитированием
Старый 08.10.2020, 07:47   #5
FireVois
Новичок
Джуниор
 
Регистрация: 22.03.2017
Сообщений: 3
По умолчанию

Поделюсь своим решением проблемы, может кому пригодится.
Код:
void MainWindow::on_SaveFile_triggered(){
        ui->textEdit->clear();
        QString fileName = QFileDialog::getSaveFileName(this,
          tr("Сохранить файл"), "", tr("Игра (*.sql)"));
            if (fileName != "") {
                QFile file(fileName);
                    if (!file.open(QIODevice::WriteOnly)) {
                        QMessageBox msgBox; msgBox.setText("Не могу записать файл"); msgBox.exec();
                        //или как выше, коротко QMessageBox::critical...
                    }
            else {
                QSqlQuery query;
                QDate cd = QDate::currentDate(); // возвращаем текущую дату
                QTime ct = QTime::currentTime(); // возвращаем текущее время
                QString data = cd.toString("dd MMMM yyyy");
                QString time = ct.toString("hh:mm:ss");
                if (!query.exec("SELECT * FROM good")){
                    qDebug() << "Error SELECT * FROM good";
                }
                QSqlRecord rec = query.record();
                ui->textEdit->append(QString("--\n-- Файл сгенерирован с помощью SQLiteStudio v3.2.1  %1 в %2\n--\n-- Использованная кодировка текста: UTF-8\n--\nPRAGMA foreign_keys = off;\nBEGIN TRANSACTION;\n\n-- Таблица: good;").arg(data).arg(time));
                while(query.next()){
                    QString num = query.value(rec.indexOf("number")).toString();
                    QString kod = query.value(rec.indexOf("kod")).toString();
                    ui->textEdit->append(QString("UPDATE good SET kod= " + kod + " WHERE number= "+num));
                }
                if (!query.exec("SELECT * FROM nogood")){
                    qDebug() << "Error SELECT * FROM nogood";
                }
                ui->textEdit->append(QString("\n-- Таблица: nogood;"));
                while(query.next()){
                    QString num = query.value(rec.indexOf("number")).toString();
                    QString kod = query.value(rec.indexOf("kod")).toString();
                    ui->textEdit->append(QString("UPDATE nogood SET kod= " + kod + " WHERE number= "+num));
                }
                    ui->textEdit->append(QString("\nCOMMIT TRANSACTION;\nPRAGMA foreign_keys = on;\n"));
                    QTextStream stream(&file);
                    stream << ui->textEdit->toPlainText();
                    stream.flush();
                    ui->textEdit->clear();
                    file.close();
            }
            }
}
FireVois вне форума Ответить с цитированием
Старый 08.10.2020, 15:23   #6
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 16,227
По умолчанию

Вот и тема будет с кодом, замечательно, спасибо топикстартеру.
Alar вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить базу SQLite из TStream? hy5 БД в Delphi 5 27.07.2017 22:46
как источником данных сделать базу sqlite в visual studio jasis C# (си шарп) 0 05.07.2016 00:13
Некорректная вставка в базу, SQLite poroshin PHP 10 05.02.2014 21:46
Сохранить базу в отдельный .mdb файл GenniY БД в Delphi 0 23.05.2010 19:23
Импорт тегов из файлов формата mp3 в базу данных sqlite antonych SQL, базы данных 2 06.12.2009 21:06


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя