2014-05-22 22 views
5

Visual Studio'da Xamarin kullanarak çapraz platform uygulaması yapmaya çalışıyoruz. Pcl projemizin içinde android, ios ve windows telefon için sqlite desteği eklememiz gerekiyor. Sqlite-Net PCL'yi NuGet üzerinden ekledik ancak SQLiteDataReader, SQLiteParameter veya SQLiteDataAdapter arasında bir değişiklik olmadı. Üç platformun tamamı için mono.data.sqlite desteği ile bir Pcl oluşturmanın herhangi bir yolu var mı? Bir xamarin çapraz platform uygulamasında sqlite desteğine sahip bir PCL nasıl oluşturulur

Taşınabilir Sınıf Kitaplığı

.NET sınırlıdır: http://docs.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/

İşte SQLite ve PCL ilişkin bir alıntı:

cevap

4

Xamarin SQLite ve bir PCL kullanan Tasky adlı bir programın iyi bir örnek vardır destekleyebileceği özellikler. Birden çok platformda çalıştığı için SQLite-NET'te kullanılan [DllImport] işlevini kullanamaz. Bunun yerine, SQLite-NET soyut bir sınıf olarak uygulanır ve daha sonra paylaşılan kodun geri kalanıyla başvurulur. Anahtar API bir özü, aşağıda gösterilmiştir: ortak kod

public abstract class SQLiteConnection : IDisposable { 

public string DatabasePath { get; private set; } 
public bool TimeExecution { get; set; } 
public bool Trace { get; set; } 
public SQLiteConnection(string databasePath) { 
    DatabasePath = databasePath; 
} 
public abstract int CreateTable<T>(); 
public abstract SQLiteCommand CreateCommand(string cmdText, params object[] ps); 
public abstract int Execute(string query, params object[] args); 
public abstract List<T> Query<T>(string query, params object[] args) where T : new(); 
public abstract TableQuery<T> Table<T>() where T : new(); 
public abstract T Get<T>(object pk) where T : new(); 
public bool IsInTransaction { get; protected set; } 
public abstract void BeginTransaction(); 
public abstract void Rollback(); 
public abstract void Commit(); 
public abstract void RunInTransaction(Action action); 
public abstract int Insert(object obj); 
public abstract int Update(object obj); 
public abstract int Delete<T>(T obj); 

public void Dispose() 
{ 
    Close(); 
} 
public abstract void Close(); 

} 

kalan soyut bir sınıf için “depo” ve veritabanı nesneleri “geri çağrılır” kullanır. Bu soyut sınıfı kullanan herhangi bir uygulamada, gerçek veritabanı işlevselliğini sağlayan eksiksiz bir uygulamada geçmeliyiz.

İlgili konular