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

Sta*_*tam 5 c# sqlite mobile cross-platform xamarin

我们尝试在Visual Studio中使用Xamarin创建跨平台应用程序.我们需要在我们的Pcl项目中添加对android,ios和windows phone的sqlite支持.我们通过NuGet添加了Sqlite-Net PCL,但没有任何SQLiteDataReader,SQLiteParameter或SQLiteDataAdapter.有没有办法为所有这三个平台创建一个支持mono.data.sqlite的Pcl?

小智 4

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

\n\n

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

\n\n

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

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

共享代码的其余部分使用抽象类从数据库中 \xe2\x80\x9cstore\xe2\x80\x9d 和 \xe2\x80\x9cretrieve\xe2\x80\x9d 对象。在任何使用此抽象类的应用程序中,我们必须传递提供实际数据库功能的完整实现。

\n