Ir ao conteúdo
  • Cadastre-se

C++ Como fazer backup e restore do banco de dados com c++ e sqlite3 ?


vpmaciel

Posts recomendados

/*
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS `estudante` (
    `nome`    VARCHAR ( 50 ) NOT NULL,
    `roll`    VARCHAR ( 40 ),
    `cgpa`    FLOAT
);
COMMIT;
*/

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
#include "sqlite3.h"
#define DB "sea.s3db"
bool isOpenDB = false;
sqlite3 *dbfile;
bool ConectaDB ();
void DesconectaDB ();
int back_up_database();
int restore_database();
class estudante {
private:
    int id;
    string nome;
    float cgpa;
public:
    estudante() {
        id=0;
        cgpa=0.00;
    }
    estudante(int i, string snome, float f) {
        id=i;
        nome = snome;
        cgpa=f;
    }
    void setid(int i) {
        id=i;
    }
    void setcgpa(float gp) {
        cgpa=gp;
    }
    void setnome(string snome) {
        nome = snome;
    }
    string getnome() {
        return nome;
    }
    int getid() {
        return id;
    }
    float getcgpa() {
        return cgpa;
    }
};

estudante getEstudante() {
    estudante estud;
    int id;
    string nome;
    float gpa;
    cout << " Digite o estudante id :" ;
    cin >> id;
    cout << " Digite o nome : " ;
    cin >> nome;
    cout << " Digite o GPA : " ;
    cin >> gpa;
    estud.setid(id);
    estud.setnome(nome);
    estud.setcgpa(gpa);
    return estud;
}
int addDataRow() {
    // pega dados do estudante pelo uruario usuário
    estudante estud = getEstudante();
    std::stringstream strm;
    strm << "insert into estudante (roll,nome,cgpa) values(" << estud.getid() << ",'" << estud.getnome() << "'," << estud.getcgpa() << ")";
    string s = strm.str();
    char *str = &s[0];
    sqlite3_stmt *statement;
    int result;
    char *query = str; {
        if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK) {
            int res=sqlite3_step(statement);
            result=res;
            sqlite3_finalize(statement);
        }
        return result;
    }
    return 0;
}
int updateRow() {
    int rollno;
    float gpa;
    cout << "Digite o ID No: ";
    cin >> rollno ;
    cout << "new CGPA : " ;
    cin >> gpa;
    std::stringstream strm;
    strm << "update estudante set cgpa=" << gpa << " where roll=" << rollno ;
    string s = strm.str();
    char *str = &s[0];
    sqlite3_stmt *statement;
    int result;
    char *query = str;
    {
        if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK) {
            int res=sqlite3_step(statement);
            result=res;
            sqlite3_finalize(statement);
        }
        return result;
    }
    return 0;
}

int deleteRow() {
    int rollno;
    cout << "Digite o ID No: ";
    cin >> rollno ;
    std::stringstream strm;
    strm << "delete from estudante " << " where roll=" << rollno ;
    string s = strm.str();
    char *str = &s[0];
    sqlite3_stmt *statement;
    int result;
    char *query = str;
    {
        if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK) {
            int res=sqlite3_step(statement);
            result=res;
            sqlite3_finalize(statement);
        }
        return result;
    }
    return 0;
}
void getTableData() {
    sqlite3_stmt *statement;
    char *query = "select * from estudante";
    if ( sqlite3_prepare(dbfile, query, -1, &statement, 0 ) == SQLITE_OK ) {
        int ctotal = sqlite3_column_count(statement);
        int res = 0;
        while ( 1 )
        {
            res = sqlite3_step(statement);
            if ( res == SQLITE_ROW ) {
                for ( int i = 0; i < ctotal; i++ ) {
                    string s = (char*)sqlite3_column_text(statement, i);
                    cout << s << " ";
                }
                cout << endl;
            }
            if ( res == SQLITE_DONE ) {
                cout << "feito ! " << endl;
                break;
            }
        }
    }
}
int main() {
    isOpenDB = ConectaDB();
    if ( isOpenDB )
        cout << "Successo na conexão !" << endl;
    else cout << "conexão falhou ! " << endl;
    estudante st[100];
    while ( 1 ) {
        int escolha;
        cout<<" Escolha Operation " << endl;
        cout << "1. Adicionar estudante"  << endl;
        cout << "2. Listar estudante" << endl;
        cout << "3. Atualizar estudante" << endl;
        cout << "4. Apagar estudante" << endl;
        cout << "5. Sair " << endl;
        cout << "6. Backup do banco de dados " << endl;
        cout << "7. Restaurar banco de dados " << endl;
        cout << "Digite a Operação NO :  ";
        cin >> escolha ;
        if(escolha == 1) {
            int count = addDataRow();
            if ( count == SQLITE_DONE ) {
                cout << "Inserido com sucesso !" << endl;
            }
        }
        if (escolha==2) {
            getTableData();
        }
        if (escolha==3) {
            updateRow();
        }
        if(escolha==4) {
            deleteRow();
        }
        if ( escolha == 5 ) {
            break;
        }
        if ( escolha == 6 ) {
            back_up_database();
        }
        if ( escolha == 7 ) {
            restore_database();
        }
    }
    return 0;
}
bool ConectaDB () {
    if ( sqlite3_open(DB, &dbfile) == SQLITE_OK ) {
        isOpenDB = true;
        return true;
    }

    return false;
}
void DesconectaDB () {
    if ( isOpenDB == true ) {
        sqlite3_close(dbfile);
    }
}
int back_up_database() {
}
int restore_database() {
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...