// Olá amigos, o código está funcionando perfeitamente
// Só não sei implementar o backup e a restauração do banco de dados
// Se alguém souber desde já agradeço
/*
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS estudante
(
nome
VARCHAR ( 50 ) NOT NULL,
roll
VARCHAR ( 40 ),
cgpa
FLOAT
);
COMMIT;
*/
// colocar os <> depois dos includes, pois não estava aparecendo no post, e tive que retiralos
#include iostream
#include fstream
#include vector
#include string
#include sstream
// colocar os < > nos include acima
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() {
}