Dear all,

I am facing a problem while using the  sqlite3_backup_init, the error code
returned by the loadOrSaveDb function is 21.
Here below the code, the function "loadOrSaveDb" was taken as is from your
web site.

Any hint?

Kind Regards.

Vincenzo.


sqlite3 *conn;
CHAR dbPath[]="/mnt/sd/NEX33A_DATA.db";

INT OpenFileDB()
{
int result = 0;
 if (pthread_mutex_init(&query_lockwrite, NULL) != 0)
{
//WriteLog1(0,0,"UTILITY --> mutex init failed\n");
}
 WriteLog1(DB_debug_mode,1,"DB_MOD --> OpenFileDB START\n");
result = sqlite3_open(":memory:", &conn);
if(result != SQLITE_OK)
 WriteLog1(DB_debug_mode,0,"DB_MOD --> Error in Db Memory open\n",result);
result=loadOrSaveDb( &conn, dbPath, 0);
if(result != SQLITE_OK)
 WriteLog1(DB_debug_mode,0,"DB_MOD --> Error on db memory copy
%d\n",result);
if (result != SQLITE_OK)
{
WriteLog1(DB_debug_mode,0,"DB_MOD --> OpenFileDB Cannot connect to
database!. ReturnCode [%d]\n",result);
}
else
{
WriteLog1(DB_debug_mode,1,"DB_MOD --> OpenFileDB connected to database!.
ReturnCode [%d]\n",result);
}
 WriteLog1(DB_debug_mode,1,"DB_MOD --> OpenFileDB END\n");
return result;
}

int loadOrSaveDb(sqlite3 *pInMemory, const char *zFilename, int isSave){
  int rc;                   /* Function return code */
  sqlite3 *pFile;           /* Database connection opened on zFilename */
  sqlite3_backup *pBackup;  /* Backup object used to copy data */
  sqlite3 *pTo;             /* Database to copy to (pFile or pInMemory) */
  sqlite3 *pFrom;           /* Database to copy from (pFile or pInMemory) */

  /* Open the database file identified by zFilename. Exit early if this
fails
  ** for any reason. */
  rc = sqlite3_open(zFilename, &pFile);
  WriteLog1(DB_debug_mode,0,"DB_MOD --> Db memory copy1 %d\n",rc);
  if( rc==SQLITE_OK ){

    /* If this is a 'load' operation (isSave==0), then data is copied
    ** from the database file just opened to database pInMemory.
    ** Otherwise, if this is a 'save' operation (isSave==1), then data
    ** is copied from pInMemory to pFile.  Set the variables pFrom and
    ** pTo accordingly. */
    pFrom = (isSave ? pInMemory : pFile);
    pTo   = (isSave ? pFile     : pInMemory);

    /* Set up the backup procedure to copy from the "main" database of
    ** connection pFile to the main database of connection pInMemory.
    ** If something goes wrong, pBackup will be set to NULL and an error
    ** code and  message left in connection pTo.
    **
    ** If the backup object is successfully created, call backup_step()
    ** to copy data from pFile to pInMemory. Then call backup_finish()
    ** to release resources associated with the pBackup object.  If an
    ** error occurred, then  an error code and message will be left in
    ** connection pTo. If no error occurred, then the error code belonging
    ** to pTo is set to SQLITE_OK.
    */
    pBackup = sqlite3_backup_init(pTo, "main", pFrom, "main");
    if( pBackup ){
      (void)sqlite3_backup_step(pBackup, -1);
      (void)sqlite3_backup_finish(pBackup);
    }
    rc = sqlite3_errcode(pTo);
  }

  /* Close the database connection opened on database file zFilename
  ** and return the result of this function. */
  (void)sqlite3_close(pFile);
  return rc;
}
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to