Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: santiago.corso en 24 Agosto 2018, 20:33 pm



Título: Error que no me deja compilar archivo en c++/sqlite3
Publicado por: santiago.corso en 24 Agosto 2018, 20:33 pm
El programa me tiro un error acerca de una entrada no reconocida en el código.
(https://i.stack.imgur.com/IzoxI.png)
Refiriendose a este pedazo de
Código:
if (sqlite3_open("C:\ProgramData\PROISER\ISASPSUS\datastore\dsfile.db", &db) != SQLITE_OK) {
        printf("ERROR: can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return found;`
Uso visual studio 2017 con las librerias correspondientes instaladas.

Les comparto todo el
Código:
    #include <stdio.h>
#include <string>
using std::string;
#include <sstream>
using std::stringstream;
using namespace std;
#include "C:\\Users\\santiago.corso\\Desktop\\sqlite-amalgamation-3240000 (1)\\sqlite-amalgamation-3240000\\sqlite3.h"
bool find_analysis(int _id)
{
    bool found = false;
    sqlite3* db;
    sqlite3_stmt* stmt;
    stringstream ss;

    // create sql statement string
    // if _id is not 0, search for id, otherwise print all IDs
    // this can also be achieved with the default sqlite3_bind* utilities
    if (_id) { ss << "select * from analysis where id = " << _id << ";"; }
    else { ss << "select * from analysis;"; }
    string sql(ss.str());

    //the resulting sql statement
    printf("sql: %s\n", sql.c_str());

    //get link to database object
    if (sqlite3_open("C:\\ProgramData\\PROISER\\ISASPSUS\\datastore\\dsfile.db", &db) != SQLITE_OK) {
        printf("ERROR: can't open database: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return found;
    }

    // compile sql statement to binary
    if (sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, NULL) != SQLITE_OK) {
        printf("ERROR: while compiling sql: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        sqlite3_finalize(stmt);
        return found;
    }

    // execute sql statement, and while there are rows returned, print ID
    int ret_code = 0;
    while ((ret_code = sqlite3_step(stmt)) == SQLITE_ROW) {
        printf("TEST: ID = %d\n", sqlite3_column_int(stmt, 0));
        found = true;
    }
    if (ret_code != SQLITE_DONE) {
        //this error handling could be done better, but it works
        printf("ERROR: while performing sql: %s\n", sqlite3_errmsg(db));
        printf("ret_code = %d\n", ret_code);
    }

    printf("entry %s\n", found ? "found" : "not found");

    //release resources
    sqlite3_finalize(stmt);
    sqlite3_close(db);

    return found;
}
Este programa tendría dos partes. Una que lee cambios de una base de datos en sqlite3 y trata de leer desde el punto donde quedó por última vez(ya que esto sería para una tarea programada, la que se ejecutaría diariamente).Luego como segunda parte, que todavía no hice, es que una vez que obtenga eso nuevo, lo exporte a un excel.

Por otro lado, trato de hacer el mismo programa pero con otro código.Dentro de ese código hay una parte que cumpliría con el seek, para saber donde es el final de archivo.Cabe aclarar que la base de datos desafortunadamente no guarda cambios por fechas.
Código:
   void recordarposicion(){
int feof;
if (fseek(dsfile, 0L, SEEK_END)==feof)
printf("%i = fread(dsfile)" );
}





Título: Re: Error que no me deja compilar archivo en c++/sqlite3
Publicado por: MAFUS en 28 Agosto 2018, 23:59 pm
Te está preguntando por main.