Exemplo n.º 1
0
        public int BackupPagecount(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return(WinSQLite3.sqlite3_backup_pagecount(internalBackup.DbBackupPtr));
            }
            else
            {
                return(SQLite3.sqlite3_backup_pagecount(internalBackup.DbBackupPtr));
            }
        }
Exemplo n.º 2
0
        public Result BackupStep(IDbBackupHandle handle, int pageCount)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return(WinSQLite3.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount));
            }
            else
            {
                return(SQLite3.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount));
            }
        }
Exemplo n.º 3
0
        public int BackupRemaining(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return(WinSQLite3.sqlite3_backup_remaining(internalBackup.DbBackupPtr));
            }
            else
            {
                return(SQLite3.sqlite3_backup_remaining(internalBackup.DbBackupPtr));
            }
        }
Exemplo n.º 4
0
        public Result BackupFinish(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return(WinSQLite3.sqlite3_backup_finish(internalBackup.DbBackupPtr));
            }
            else
            {
                return(SQLite3.sqlite3_backup_finish(internalBackup.DbBackupPtr));
            }
        }
Exemplo n.º 5
0
 public Result BackupStep(IDbBackupHandle handle, int pageCount) {
 	var internalBackup = (DbBackupHandle)handle;
 	return SQLiteApiWin32Internal.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount);
 }
Exemplo n.º 6
0
 public bool Equals(IDbBackupHandle other)
 {
     return(other is DbBackupHandle && DbBackupPtr == ((DbBackupHandle)other).DbBackupPtr);
 }
Exemplo n.º 7
0
        public int BackupPagecount(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            return(SQLiteApiIOSInternal.sqlite3_backup_pagecount(internalBackup.DbBackupPtr));
        }
Exemplo n.º 8
0
        public int BackupRemaining(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            return(SQLiteApiIOSInternal.sqlite3_backup_remaining(internalBackup.DbBackupPtr));
        }
Exemplo n.º 9
0
        public Result BackupFinish(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            return(SQLiteApiIOSInternal.sqlite3_backup_finish(internalBackup.DbBackupPtr));
        }
Exemplo n.º 10
0
 public int BackupPagecount(IDbBackupHandle handle) {
 	var internalBackup = (DbBackupHandle)handle;
 	return SQLiteApiWin32Internal.sqlite3_backup_pagecount(internalBackup.DbBackupPtr);
 }
Exemplo n.º 11
0
        public int BackupRemaining(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return WinSQLite3.sqlite3_backup_remaining(internalBackup.DbBackupPtr);
            }
            else
            {
                return SQLite3.sqlite3_backup_remaining(internalBackup.DbBackupPtr);
            }
        }
Exemplo n.º 12
0
        public Result BackupFinish(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return WinSQLite3.sqlite3_backup_finish(internalBackup.DbBackupPtr);
            }
            else
            {
                return SQLite3.sqlite3_backup_finish(internalBackup.DbBackupPtr);
            }
        }
Exemplo n.º 13
0
        public Result BackupStep(IDbBackupHandle handle, int pageCount)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return WinSQLite3.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount);
            }
            else
            {
                return SQLite3.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount);
            }
        }
Exemplo n.º 14
0
        public Result BackupFinish(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            return((Result)raw.sqlite3_backup_finish(internalBackup.DbBackupPtr));
        }
Exemplo n.º 15
0
 public Result BackupFinish(IDbBackupHandle handle) {
 	var internalBackup = (DbBackupHandle)handle;
 	return SQLiteApiWin32Internal.sqlite3_backup_finish(internalBackup.DbBackupPtr);
 }
Exemplo n.º 16
0
        public int BackupPagecount(IDbBackupHandle handle)
        {
            var internalBackup = (DbBackupHandle)handle;

            if (_useWinSqlite)
            {
                return WinSQLite3.sqlite3_backup_pagecount(internalBackup.DbBackupPtr);
            }
            else
            {
                return SQLite3.sqlite3_backup_pagecount(internalBackup.DbBackupPtr);
            }
        }
Exemplo n.º 17
0
 public int BackupRemaining(IDbBackupHandle handle) {
 	var internalBackup = (DbBackupHandle)handle;
 	return SQLiteApiWin32Internal.sqlite3_backup_remaining(internalBackup.DbBackupPtr);
 }
Exemplo n.º 18
0
        public Result BackupStep(IDbBackupHandle handle, int pageCount)
        {
            var internalBackup = (DbBackupHandle)handle;

            return(SQLiteApiIOSInternal.sqlite3_backup_step(internalBackup.DbBackupPtr, pageCount));
        }
Exemplo n.º 19
0
 	public bool Equals(IDbBackupHandle other) {
 		return other is DbBackupHandle && DbBackupPtr == ((DbBackupHandle)other).DbBackupPtr;
 	}
Exemplo n.º 20
0
        public static string BackupDatabase(this SQLiteConnection conn, ISQLitePlatform platform, string folderName = null)
        {
            ISQLiteApiExt sqliteApi = platform.SQLiteApi as ISQLiteApiExt;

            if (sqliteApi == null)
            {
                return(null);
            }

            string additionalPath = string.Empty;

            if (!string.IsNullOrEmpty(folderName))
            {
                ApplicationData.Current?.LocalFolder.CreateFolderAsync(folderName, CreationCollisionOption.FailIfExists);
                //  if (asyncOperation != null)
                //      await asyncOperation;
                additionalPath = "\\" + folderName;
            }

            string destDbPath = ApplicationData.Current?.LocalFolder.Path + additionalPath + "\\db." + DateTime.UtcNow.ToString("yyyy-MM-dd_HH-mm-ss");

            IDbHandle destDb;

            byte[] databasePathAsBytes = GetNullTerminatedUtf8(destDbPath);
            Result r = sqliteApi.Open(databasePathAsBytes, out destDb,
                                      (int)(SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite), IntPtr.Zero);

            if (r != Result.OK)
            {
                throw SQLiteException.New(r, String.Format("Could not open backup database file: {0} ({1})", destDbPath, r));
            }

            /* Open the backup object used to accomplish the transfer */
            IDbBackupHandle bHandle = sqliteApi.BackupInit(destDb, "main", conn.Handle, "main");


            if (bHandle == null)
            {
                // Close the database connection
                sqliteApi.Close(destDb);

                throw SQLiteException.New(r, String.Format("Could not initiate backup process: {0}", destDbPath));
            }

            /* Each iteration of this loop copies 5 database pages from database
            ** pDb to the backup database. If the return value of backup_step()
            ** indicates that there are still further pages to copy, sleep for
            ** 250 ms before repeating. */
            do
            {
                r = sqliteApi.BackupStep(bHandle, 5);

                if (r == Result.OK || r == Result.Busy || r == Result.Locked)
                {
                    sqliteApi.Sleep(250);
                }
            } while (r == Result.OK || r == Result.Busy || r == Result.Locked);

            /* Release resources allocated by backup_init(). */
            r = sqliteApi.BackupFinish(bHandle);

            if (r != Result.OK)
            {
                // Close the database connection
                sqliteApi.Close(destDb);

                throw SQLiteException.New(r, String.Format("Could not finish backup process: {0} ({1})", destDbPath, r));
            }

            // Close the database connection
            sqliteApi.Close(destDb);

            return(destDbPath);
        }