在xamarin.forms中安装移动应用程序期间执行sqlite查询

在xamarin.forms中安装移动应用程序期间执行sqlite查询,sqlite,xamarin.forms,offline-mode,app-update,Sqlite,Xamarin.forms,Offline Mode,App Update,嗨,我正在为我的Xamarin.forms应用程序编写一个用例。用例是在应用程序安装期间执行一些sqlite查询,以获取新应用程序版本中的任何数据库更改信息 目前,当我升级到新版本后启动应用程序时,我会调用api以获取新版本中的数据库更改。例如,如果任何现有表已更新,则我会在应用程序启动期间获取信息,并相应地重置这些数据库表。下面是我执行并获取此信息的代码: public async Task CheckVersionUpdateDevice() { try

嗨,我正在为我的Xamarin.forms应用程序编写一个用例。用例是在应用程序安装期间执行一些sqlite查询,以获取新应用程序版本中的任何数据库更改信息

目前,当我升级到新版本后启动应用程序时,我会调用api以获取新版本中的数据库更改。例如,如果任何现有表已更新,则我会在应用程序启动期间获取信息,并相应地重置这些数据库表。下面是我执行并获取此信息的代码:

    public async Task CheckVersionUpdateDevice()
    {
        try
        {
            AppVersion _appVersion = new AppVersion();
            string strSQL = "SELECT * FROM AppVersion";
            var existingAppVersion = await sqlLiteDatabase.GetItemsAsync<AppVersion>(strSQL);
            Version _currentVersion = Version.Parse(existingAppVersion[0].versionNumber);
            Version _newVersion = AppInfo.Version;

            int comparisonResult = _newVersion.CompareTo(_currentVersion);

            if (comparisonResult > 0)
            {
                var result = _deviceService.GetVersionChangeData(existingAppVersion[0].versionNumber); // #1 Get database changes in new version

                if (result != null && result[0].ChangeList != null && result[0].ChangeList.Count > 0)
                {
                    UpdateTablesAndFiles(result[0].ChangeList); // #2 Reset all the tables.
                }
            }

            _appVersion.versionNumber = _newVersion.ToString();
            await sqlLiteDatabase.InsertOrReplaceAsync<AppVersion>(_appVersion, false);
        }
        catch (Exception ex)
        {
            await App.HandleException(ex);
        }
    }
公共异步任务CheckVersionUpdateDevice()
{
尝试
{
AppVersion _AppVersion=新AppVersion();
string strSQL=“从AppVersion中选择*”;
var existingAppVersion=wait sqlLiteDatabase.GetItemsAsync,但找不到可行的解决方案,因此想知道是否有人建议在应用程序安装过程中执行某种操作以获取最新的数据库更改。因为应用程序安装总是在internet打开时进行

欢迎您提出任何建议或想法!

您可以先用它检查网络,然后决定是否进行数据库更改或显示警报,告知用户需要连接到Internet:

    var current = Connectivity.NetworkAccess;

    if (current == NetworkAccess.Internet)
    {
        //internet is available
        CheckVersionUpdateDevice();
    }
    else
    {
        //show alert to user
    }

如果由于任何原因无法在启动时更新,请阻止他们使用应用程序并显示错误,直到他们能够连接/更新。或者,将数据库更改信息构建到新版本中,而不是从服务器获取它。@Jason,谢谢你的建议。这也是我的第一个想法,但我想知道是否有其他方法可以解决.