PCLのXamarin.Forms用にNUGetパッケージをインストールしました。 Droid、iOS、Win 8.1、WinPhone 8.1の4つのプロジェクトがあります。私のデータベースに接続しようとしましたが、問題が発生しました。私のWinとWinPhoneプロジェクトはそれを見たり、間違ったパスを返したりしません。公式のXamarin.Formsフォーラムに続きました。WinPhone上のSQLiteDB(またはコピー)へのパスが正しくありません。 Xamarin.Forms PCL
インタフェース:
public interface ISQLite
{
string GetDatabasePath(string filename);
}
WInPhoneクラス:
using System.IO;
using Windows.Storage;
using Baumizer.WinPhone;
using Xamarin.Forms;
[assembly: Dependency(typeof(SQLite_WinPhone))]
namespace Baumizer.WinPhone
{
public class SQLite_WinPhone:ISQLite
{
public SQLite_WinPhone() { }
public string GetDatabasePath(string filename)
{
return Path.Combine(ApplicationData.Current.LocalFolder.Path, filename);
}
}}
情報を選択するためのこのクラス:
public class DataBase
{
SQLiteConnection connection;
public DataBase()
{
connection= new SQLiteConnection(DependencyService.Get<ISQLite>().GetDatabasePath("Database.db"));
}
public IEnumerable<Group> GetGroups()
{
return connection.Query<Group>("SELECT * FROM [Scedule] WHERE [facultyName] =" + "'" + Data.CurrentFaculty + "'");
}
}
これは、Android上でうまく動作します。 WinPhoneではSQLiteの例外を受け取ります - このようなテーブルはありません:Scedule。私はエミュレータのローカルディレクトリを開きます。ここでdbは0Kbです。 私はdbをに、資産はとし、BuildInActionをからに変更しました。に設定しました。何が間違っている?
if(await ApplicationData.Current.LocalFolder.GetItemAsync(Data.DataBaseName) == null)
{
StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync($"Assets\\{Data.DataBaseName}");
await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
}
それをコピーDBが存在していないが、それがある場合:WinPhone App.csにOnLaunched (...)にパット、このコードを見つけるフォーラムで
テーブルをどこかに作成していますか?それとも既存のデータベースですか? –
既存のデータベースです –