繁体   English   中英

如何在Xamarin跨平台应用程序中创建具有sqlite支持的PCL

[英]How to create a PCL with sqlite support in a xamarin cross platform application

我们尝试在Visual Studio中使用Xamarin制作跨平台应用程序。 我们需要在Pcl项目中添加对Android,iOS和Windows Phone的sqlite支持。 我们通过NuGet添加了Sqlite-Net PCL,但没有任何SQLiteDataReader,SQLiteParameter或SQLiteDataAdapter。 有什么方法可以创建对所有三个平台都具有mono.data.sqlite支持的Pcl吗?

Xamarin有一个名为Tasky的程序的良好示例,该程序使用SQLite和PCL: http ://docs.xamarin.com/guides/cross-platform/application_fundamentals/pcl/introduction_to_portable_class_libraries/

以下是有关SQLite和PCL的摘录:

可移植类库在它可以支持的.NET功能中受到限制。 因为它被编译为可以在多个平台上运行,所以它无法利用SQLite-NET中使用的[DllImport]功能。 而是将SQLite-NET实现为抽象类,然后通过其余共享代码进行引用。 下面显示了抽象API的摘录:

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();

}

其余共享代码使用抽象类从数据库“存储”和“检索”对象。 在使用此抽象类的任何应用程序中,我们都必须传递一个完整的实现,该实现提供实际的数据库功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM