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

Posted

技术标签:

【中文标题】如何在 xamarin 跨平台应用程序中创建具有 sqlite 支持的 PCL【英文标题】:How to create a PCL with sqlite support in a xamarin cross platform application 【发布时间】:2014-05-22 14:54:59 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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


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

【讨论】:

以上是关于如何在 xamarin 跨平台应用程序中创建具有 sqlite 支持的 PCL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 的 xamarin 表单中创建渐变按钮背景

如何在 Xamarin.Forms 中创建永无止境的后台服务?

Xamarin Forms Sharedpreferences 交叉

如何使用Xamarin在Visual Studio中创建Android应用

如何在 Xamarin Forms 中创建隐藏溢出

无法使用 PCLStorage 或 Xamarin Forms Labs 在 Android 文件系统中创建文件夹/文件