How to use SQLiteAsyncConnection from the async PCL version of SQLite?
Asked Answered
T

2

14

I'm using a PCL version of Sqlite.net from https://github.com/oysteinkrog/SQLite.Net-PCL

However, I'm unable to get the DB connection setup. The SQliteAsyncConnection does unlike the original version not take a string (path to the DB), but a [Func< SQLiteConnectionWithLock>.]2

How can this be used? In general: how to use this library? I have a core PCL lib which does all the business logic from my iOS, Android and WP8 projects. My understanding was that I can drop the the Sqlite-Net Async PCL into my PCL lib. But it seems like I have to provide some platform specific stuff to get it to work.

Tangy answered 10/12, 2013 at 13:30 Comment(0)
I
28

You just need to create a function that returns a SQLiteConnectionWithLock and pass that to the SQLiteAsyncConnection constructor.

string databasePath = "path";
var connectionFactory = new Func<SQLiteConnectionWithLock>(()=>new SQLiteConnectionWithLock(new SQLitePlatformWinRT(), new SQLiteConnectionString(databasePath, storeDateTimeAsTicks: false)));
var asyncConnection = new SQLiteAsyncConnection(connectionFactory);
Insolvable answered 10/12, 2013 at 13:39 Comment(8)
Where does SQLitePlatformWinRTcome from? Separate package? Does it work for WP8 too / is there an implementation?Tangy
I mixed up WinRT and WP8 in your question. There is SQLitePlatformWP8CSharp in the SQLite.Net.Platform.WindowsPhone8.CSharpSqlite namespaceInsolvable
The code doesn't have any errors but the database is not created. Why?Caper
thank you! man this was hard to find. All the docs everywhere else seem to imply you can just create a SQLiteAsyncConnection with a database path.Soft
Any ideas on how to customize the connection string? I want to use custom PRAGMAS.Degradation
Likewise, thanks. Documentation for this otherwise apparently useful library is woefully inadequate.Johnette
You'll eventually hit an SQLite busy exception if your connection factory continually hands out new connections ... you may be better of creating a single connection, and have the connection factory return that.Sackbut
How to read a password protected sqlite database using this method? Thanks.Godman
S
2

I've had problems with this too. To meet Johnbot's answer which is correct I am adding how I have used this library and got it to work. I did not really understand the NuGet packages, so I did it manually.

  1. Download the project https://github.com/oysteinkrog/SQLite.Net-PCL

  2. Load the solution in VS2015, set to release mode and create the dlls for:

a) SQLite.Net

b) SQLite.Net.Async

c) SQLite.Net.Platform.WinRT which is for Windows 10 universal apps, or the platform you need.

Ensure you have these references in your project.

references

SQLIte for Universal App is installed from VS Tools / Extensions and Updates. Once installed it is referenced under Universal Windows / Extensions along with the Visual C++ 2015 which is also required.

Good luck!

Sporting answered 24/1, 2016 at 12:40 Comment(2)
Do I need to have the WinRT platform? I only want to develop towards android and iosViolinist
Time has moved on and I now use only SQlite.Net-PCL, I no longer use the Sqlite async calls, but make async functions in C# if needed. Excuse me but I am not yet coding for IOS and android, hope this helps;Sporting

© 2022 - 2024 — McMap. All rights reserved.