Jha*_*118 1 sqlite windows-phone mvvmcross windows-store-apps sqlite-net
我正在使用sql-net和mvvmcross构建一个Windows 8应用程序,以便对sqlite数据库进行数据访问.这适用于任何Win-8或Win-Phone应用程序.
我需要在app start上安装一个现有的sqlite文件.
使用连接时,您可以使用此语法
public FlashCardManager(ISQLiteConnectionFactory factory, IMvxMessenger messenger)
{
_messenger = messenger;
_connection = factory.Create("Dictionary.sqlite");
_connection.CreateTable<FlashCardSet>();
_connection.CreateTable<FlashCard>();
}
public void CreateCard(FlashCard flashCard)
{
_connection.Insert(flashCard);
}
Run Code Online (Sandbox Code Playgroud)
该连接在以下位置创建文件:C:\ Users\USER\AppData\Local\Packages\793fd702-171e-474f-ab3b-d9067c58709b_ka9b83fa3fse2\LocalState
我的应用程序使用我创建的现有sqlite数据库文件.安装应用程序时,我需要将它放在此文件夹中.我该怎么做呢?
谢谢,JH
确保您拥有希望应用程序在您的某个应用程序文件夹中启动的数据库文件(如在visual studio解决方案资源管理器中可见的文件夹中).对于此示例,我将调用此文件夹"Assets"
您需要做的就是LocalState在第一次运行应用程序时将此文件复制到该文件夹.这可以在App.xaml.cs
private async void InitializeAppEnvironment()
{
try
{
if (!(await AppHelper.ExistsInStorageFolder(AppHelper.localFolder, dbName)))
{
StorageFile defaultDb = await AppHelper.installedLocation.GetFileAsync("Assets\\" + dbName);
await defaultDb.CopyAsync(AppHelper.localFolder);
}
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个AppHelper类来简化对app数据文件夹的访问,这里是我上面使用的部分:
static class AppHelper
{
public static StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
public static StorageFolder localFolder = ApplicationData.Current.LocalFolder;
public static async Task<bool> ExistsInStorageFolder(this StorageFolder folder, string fileName)
{
try
{
await folder.GetFileAsync(fileName);
return true;
}
catch (FileNotFoundException)
{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |