2016-11-14 8 views
0

これはVisual Studio 2015を使用してクロスプラットフォームアプリケーションを作成する私の最初の試みです。ネット上で利用可能なチュートリアルの助けを借りて、私はUWP(Xamarinフォーム)でSQLiteを使用することができました。しかし、私は事前に設定されたsqliteデータベースをコピーし、それを使用する方法を知らない?UWPで事前入力済みのsqliteデータベースを使用するにはどうすればよいですか?

私のコードサンプルがある -

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(ユニバーサル・ウィンドウ・プログラミング)について、エラーを表示していることを尋ねていました。「アプリケーションは「GetResourceStream」の定義を含んでいません。」iOSとアンドロイドについては、もうネット上の別のチュートリアルで動作させました。そして私はWP8を使用していません –

+0

@ Dr.AtulTiwari答えにUWP情報を追加しました。 – Nikita

+0

ありがとうございますが、私はまだ疑問を持っています。ここで 'someObj'とは何ですか? –

関連する問題