2016-11-14 2 views
0

Это моя первая попытка сделать кросс-платформенное приложение с помощью Visual Studio 2015. С помощью обучающих программ, доступных в сети, я смог использовать SQLite в UWP (Xamarin Forms). Но, я не знаю, как скопировать базу данных sqlite, предварительно заполненную и использовать ее?Как использовать базу данных sqlite, предварительно заполненную в UWP?

Мой пример кода -

using Medical_Study.UWP; 
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Windows.Storage; 
using Xamarin.Forms; 

[assembly: Dependency(typeof(SqliteService))] 

namespace Medical_Study.UWP 
{ 

    public class SqliteService : ISQLite 
    { 
     public SqliteService() 
     { 
     } 
     #region ISQLite implementation 
     public SQLite.SQLiteConnection GetConnection() 
     { 
      var sqliteFilename = "QBank.db"; 
      string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, sqliteFilename); 
      var conn = new SQLite.SQLiteConnection(path); 

      // Return the database connection 
      return conn; 
     } 
     #endregion 
    } 
} 

ответ

1

Для развертывания предварительно заполненному SQLite DB «QBank.db» вы можете скомпилировать его в качестве встроенного ресурса приложения и при первом запуске скопируйте его в LocalFolder для дальнейшего использовать.

Для этого введите «QBank.db» в свой проект и выберите Build Action -> Embedded Resource.

GetConnection() метод может быть реализован следующим образом:

public SQLite.SQLiteConnection GetConnection() 
{ 
    var sqliteFilename = "QBank.db"; 

    var assembly = GetType().GetTypeInfo().Assembly; 
    var qbankDbResource 
    = assembly.GetManifestResourceNames().FirstOrDefault(name => name.EndsWith(sqliteFilename)); 
    if (qbankDbResource == null) 
    { 
    Debug.Assert(false, string.Format("{0} database is not included as embedded resource", sqliteFilename)); 
    return null; 
    } 

    string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, sqliteFilename); 
    using (var qbankDbStream = assembly.GetManifestResourceStream(qbankDbResource)) 
    using (var fStream = new FileStream(path, FileMode.Create, FileAccess.Write)) 
    { 
    qbankDbStream.CopyTo(fStream); 
    } 

    var conn = new SQLite.SQLiteConnection(path); 
    // Return the database connection 
    return conn; 
} 
+0

Спасибо за ваш ответ. Но я спрашивал конкретно о UWP (Universal Windows Programming), поскольку он показывает ошибку - «Приложение» не содержит определения для «GetResourceStream». «Для iOS и Android я уже сделал это из другого учебника по сети. И я не использую WP8 –

+0

@ Dr.AtulTiwari Добавил UWP-информацию в ответ. Пожалуйста, проверьте – Nikita

+0

Спасибо, но у меня все еще есть сомнения. Что такое 'someObj' здесь? –

Смежные вопросы