Mg Bhadurudeen
Mg Bhadurudeen

Reputation: 1434

How to pass db path name in new SQLiteConnection in UWP?

I am working with Sqlite db in uwp, I am able to create db successfully without any issue in Local folder of my app.

But when I try to create in other places, I get error as

"SQLite.Net.SQLiteException: 'Could not open database file: E:\Users\PC3\Pictures\Abcd\MyDbFolder\mydb.sqlite (CannotOpen)"

I got the path string using StorageFolder.Path which I got through Folder picker, then I added it to FutureAccessList too. Though not works. Since the New db connection method expects the path, I am struggling for a long time, to use path in the Constructor.

//DbPathFromFAList = foldername.path (got from FutureAccess List) + mydbName.sqlite;
sqliteConn = new SQLiteConnection(new SQLitePlatformWinRT(), DbPathFromFAList);

Upvotes: 1

Views: 747

Answers (1)

Nico Zhu
Nico Zhu

Reputation: 32775

As Rob said in this thread,

SQLite uses paths not streams and bypasses the file broker. It's database has to be in application data so the app has direct read/write permissions or install dir for read only.

You could not pass the path string parameter such as D: E: to SQLiteConnection method, even though you have used FilePicker to get the full file's permission.

In general, we use LocalFolder to store db file that could access directly.

DbFilePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Sqlite.db");
sqliteConn = new SQLiteConnection(new SQLitePlatformWinRT(), DbFilePath);

And the specified path is located at:

C:\Users[Your User Name]\AppData\Local\Packages[Your Package Name]\LocalState

You can not set it to the D or E disk. If you have used external database, please copy the db file to the local folder. for more please refer this document.

Upvotes: 1

Related Questions