Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
vpmaciel

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

Recommended Posts

/*
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() {
}

 

Editado por vpmaciel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×