• 0
Sign in to follow this  
vpmaciel

CRUD com backup e restore do banco de dados sqlite3

Question

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

// como fazer o backup e restauração do banco de dados ?
#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() {

}
 

Edited by vpmaciel

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this