Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从SQLite的异步PCL版本使用SQLiteAsyncConnection?_C#_Sqlite_Windows Phone 8_Xamarin.ios_Xamarin.android - Fatal编程技术网

C# 如何从SQLite的异步PCL版本使用SQLiteAsyncConnection?

C# 如何从SQLite的异步PCL版本使用SQLiteAsyncConnection?,c#,sqlite,windows-phone-8,xamarin.ios,xamarin.android,C#,Sqlite,Windows Phone 8,Xamarin.ios,Xamarin.android,我使用的是来自的Sqlite.net的PCL版本 但是,我无法获得数据库连接设置。SQliteAsyncConnection与原始版本不同,它不采用字符串(指向数据库的路径),而是采用[Func] 这个怎么用? 一般情况:如何使用此库?我有一个核心PCL库,它完成我的iOS、Android和WP8项目的所有业务逻辑。我的理解是,我可以将Sqlite Net异步PCL放入我的PCL库中。但似乎我必须提供一些特定于平台的东西才能让它工作。您只需要创建一个函数,返回一个SQLiteConnection

我使用的是来自的Sqlite.net的PCL版本

但是,我无法获得数据库连接设置。
SQliteAsyncConnection
与原始版本不同,它不采用字符串(指向数据库的路径),而是采用
[Func]

这个怎么用?
一般情况:如何使用此库?我有一个核心PCL库,它完成我的iOS、Android和WP8项目的所有业务逻辑。我的理解是,我可以将Sqlite Net异步PCL放入我的PCL库中。但似乎我必须提供一些特定于平台的东西才能让它工作。

您只需要创建一个函数,返回一个
SQLiteConnectionWithLock
并将其传递给
SQLiteAsyncConnection
构造函数

string databasePath = "path";
var connectionFactory = new Func<SQLiteConnectionWithLock>(()=>new SQLiteConnectionWithLock(new SQLitePlatformWinRT(), new SQLiteConnectionString(databasePath, storeDateTimeAsTicks: false)));
var asyncConnection = new SQLiteAsyncConnection(connectionFactory);
string databasePath=“path”;
var connectionFactory=new Func(()=>new-SQLiteConnectionWithLock(new-SQLitePlatformWinRT(),new-SQLiteConnectionString(databasePath,storeDateTimeAsTicks:false));
var asyncConnection=新的SQLiteAsyncConnection(connectionFactory);

我在这方面也遇到了问题。为了满足Johnbot的正确答案,我添加了我是如何使用这个库并使其工作的。我没有真正理解NuGet软件包,所以我手动完成了它

  • 下载项目

  • 在VS2015中加载解决方案,设置为释放模式并为以下内容创建DLL:

  • a) SQLite.Net

    b) SQLite.Net.Async

    c) SQLite.Net.Platform.WinRT,适用于Windows 10通用应用程序或您需要的平台

    确保项目中有这些参考资料

    SQLIte for Universal App是通过VS工具/扩展和更新安装的。一旦安装,它在通用窗口/扩展下引用,Visual C++ 2015也是必需的。
    祝你好运

    SQLitePlatformWinRT
    来自哪里?单独包装?它是否也适用于WP8/是否有实现?我在您的问题中混淆了WinRT和WP8。在
    SQLite.Net.Platform.WindowsPhone8.CSharpSqlite
    名称空间中有
    SQLitePlatformWP8CSharp
    ,谢谢!这个人很难找到。其他地方的所有文档似乎都暗示您可以使用数据库路径创建一个
    SQLiteAsyncConnection
    。同样,谢谢。这个显然有用的库的文档远远不够。如果您的连接工厂不断提供新的连接,您最终会遇到SQLite忙异常。。。您最好创建一个连接,并让连接工厂返回该连接。我需要WinRT平台吗?我只想向android发展,而iosTime已经向前发展了,我现在只使用SQlite.Net-PCL,我不再使用SQlite异步调用,而是在需要时用C#生成异步函数。对不起,我还没有为IOS和android编写代码,希望这能有所帮助;