Error que no me deja compilar archivo en c++/sqlite3

Iniciado por santiago.corso, 24 Agosto 2018, 20:33 PM

0 Miembros y 1 Visitante están viendo este tema.

santiago.corso

El programa me tiro un error acerca de una entrada no reconocida en el código.

Refiriendose a este pedazo de 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
   #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.
  void recordarposicion(){
int feof;
if (fseek(dsfile, 0L, SEEK_END)==feof)
printf("%i = fread(dsfile)" );
}





MAFUS