15

I am coding a Xamarin Android application, and am getting an error when trying to create a SQLite database.

Here is my code:

string applicationFolderPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "CanFindLocation");
string databaseFileName = System.IO.Path.Combine(applicationFolderPath, "CanFindLocation.db");
SQLite.SQLite3.Config(SQLite.SQLite3.ConfigOption.Serialized);
var db = new SQLiteConnection (databaseFileName);

Here is the error that I am getting:

SQLite.SQLiteException: Could not open database file: /data/data/com.xamarin.docs.android.mapsandlocationdemo2/files/CanFindLocation/CanFindLocation.db (CannotOpen)

I have the same code working in another Xamarin application and would like to know if the exception has something to do with the name of the package?

Thanks in advance

1
  • click your database visible top right menu Sql lite Browser select it Commented Sep 17, 2014 at 6:44

3 Answers 3

28

Does the path folder path that you are providing to SQLite exist? If you haven't created the CanFindLocation folder then opening a connection to that path will fail.

Try:

string applicationFolderPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "CanFindLocation");

// Create the folder path.
System.IO.Directory.CreateDirectory(applicationFolderPath);

string databaseFileName = System.IO.Path.Combine(applicationFolderPath, "CanFindLocation.db");
SQLite.SQLite3.Config(SQLite.SQLite3.ConfigOption.Serialized);
var db = new SQLiteConnection (databaseFileName);
Sign up to request clarification or add additional context in comments.

4 Comments

Thanks, wish I could upvote several times, took hours to find this post!
I am getting the same error, ... But SQLite.SQLite3 doesnt have "Config" method, why? I am using "sqlite-net-pcl (1.4.118)" and "Xamarin.Forms(3.1.0)"
I found that whilst debugging sometimes, the Path magically doesn't exist, then I run again and it works. on and off
Hilariously, I've just re-discovered this via Google and solved my own issue with my own answer without realising initially... Doh!
3

Using MAUI, I was able to get past the same error but setting path to

System.Environment.SpecialFolder.ApplicationData

Comments

1

My problem is related to added the option of "SQLiteOpenFlags.Create" during the initialization.

SQLiteAsyncConnection database = new SQLiteAsyncConnection(dbPath, SQLiteOpenFlags.Create);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.