C# 将数据库从安装位置复制到本地文件夹

C# 将数据库从安装位置复制到本地文件夹,c#,sqlite,uwp,C#,Sqlite,Uwp,我有一个关于“ms”的数据库-appx:///Databases/tryout2.sqlite“(安装位置)。我想将其复制到本地应用程序文件夹,因为每次用户登录时,我都需要将数据插入数据库中的表中(如果名称和电子邮件相同,则不会插入数据库)。当用户首次登录时,我遇到了问题,然后数据库可以复制到本地文件夹。但如果用户再次登录,则会出现如下错误消息: App.xaml.cs: public static string DB_PATH = Path.Combine(Path.Combine(

我有一个关于“ms”的数据库-appx:///Databases/tryout2.sqlite“(安装位置)。我想将其复制到本地应用程序文件夹,因为每次用户登录时,我都需要将数据插入数据库中的表中(如果名称和电子邮件相同,则不会插入数据库)。当用户首次登录时,我遇到了问题,然后数据库可以复制到本地文件夹。但如果用户再次登录,则会出现如下错误消息:

App.xaml.cs:

    public static string DB_PATH = Path.Combine(Path.Combine(Package.Current.InstalledLocation.Path, @"Databases\tryout2.sqlite"));
            public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
                if (!CheckFileExists("tryout2.sqlite").Result)
                {
                    using (var db = new SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DB_PATH))
                    {
                        db.CreateTable<DBQUIZ>();
                        db.CreateTable<DBQUESTION>();
                        db.CreateTable<DBOPTION>();
                        db.CreateTable<DBUSER>();
                        db.CreateTable<DBRESULT>();
                    }
                }
            }

            private async Task<bool> CheckFileExists(string fileName)
            {
                try
                {
                    var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
                    return true;
                }
                catch
                {
                }
                return false;
            }

如何处理?或者是否有其他方法将数据插入安装位置数据库中的表?

您正在将文件复制到其自己的位置?(插入器方法)。你看了吗?@brijber是的,我想将数据库从已安装的locaton复制到本地包文件夹。因为在将数据插入数据库的安装位置时,无法执行此操作。错误消息显示为只读。或者有其他方法吗?@AVK i use private async Task CheckFileExists(字符串文件名)在我的DatabaseHelper.class中。如果可以使用,它会在指定的文件夹中创建文件的副本并重命名副本。此方法还指定如果目标文件夹中已存在同名文件,应执行的操作。
string DB_PATH_COPY;

        public void CreateDatabase(string DB_PATH)
        {
            if (!CheckFileExists(DB_PATH).Result)
            {
                using (SQLite.Net.SQLiteConnection dbConn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), App.DB_PATH))
                {
                    dbConn.CreateTable<DBQUIZ>();
                    dbConn.CreateTable<DBQUESTION>();
                    dbConn.CreateTable<DBOPTION>();
                    dbConn.CreateTable<DBUSER>();
                    dbConn.CreateTable<DBRESULT>();
                }
            }
        }

        private async Task<bool> CheckFileExists(string fileName)
        {
            try
            {
                var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
                return true;
            }
            catch
            {
                return false;
            }
        }

public async void InsertUser(DBUSER objUser)
        {
            if (!CheckFileExists(DB_PATH_COPY).Result)
            {
                StorageFile dbFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Databases/tryout2.sqlite"));
                StorageFolder localFolder = ApplicationData.Current.LocalFolder;
                StorageFile dbFileCopy = await dbFile.CopyAsync(localFolder);
                DB_PATH_COPY = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, dbFileCopy.Path.ToString()));
            }

            using (var dbConn = new SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DB_PATH_COPY))
            {
                    dbConn.RunInTransaction(() =>
                    {
                        dbConn.Insert(objUser);
                    });
            }
        }
DatabaseHelper Db_Helper = new DatabaseHelper();//Creating object for DatabaseHelperClass.cs from ViewModel/DatabaseHelperClass.cs  
            if (emailField.Text != "" & namaField.Text != "")
            {
                Db_Helper.InsertUser(new Tryout.Models.DBUSER(emailField.Text, "", 0, namaField.Text));
                this.Frame.Navigate(typeof(Tryout.TryoutHome1));
            }
            else
            {
                MessageDialog messageDialog = new MessageDialog("Nama dan Email harus diisi");//Text should not be empty  
                await messageDialog.ShowAsync();
            }