dotnetco.de

Browse SQLite databases in Xamarin Forms iOS or Android

If you are using SQLite as local database for your Xamarin Forms application, you might want to have a look at the local database with a database browser. Here’s short information about how to browse through your local SQLite Database for Xamarin Forms.

Where is the SQLite database located?

If you have already configured your SQLite database for Xamarin Forms, you know that you have to supply the path to your SQLite path in App.xaml constructor like this:

public App(string dbPath)

 

In my connection manager class I store the path to the database in a local variable as it has to be supplied in the constructor of the connection manager like this:

private static string dbPath;

public ConnectionManager(string path)
{
    dbPath = path;
    //do all the other stuff like creating tables etc...
}

public string pathToDB()
{
    return dbPath;
}

 

 

So if your app has an infopage or else, you might want to output the full path there as long as you are in debug mode. Just place a label and hide it if you are not in debug mode.

#if DEBUG
    PathToMyDB.IsVisible = true;
    PathToMyDB.Text = App.dbConnectionManager.pathToDB();
#else
    PathToMyDB.IsVisible = false;
#endif

 

Where is SQLite database stored in Xamarin Forms iOS Simulator?

Once it’s done and you start your app with iOS and Android you’ll notice that the path in iOS is a little bit more complex than in Android. In iOS it’s something like

“/Users/kai/Library/Developer/CoreSimulator/Devices/EAC61CAD-EF75-4AF1-A6A7-3773E57F4D95/data/Containers/Data/Application/0D5937C3-D321-4F24-94A7-EEC96F910EFE/Documents/../Library/Databases/myapp.db3”

So that’s the full path. You could open Finder and simply navigate to this location.

Where is SQLite database stored in Xamarin Forms Android Emulator?

In Android it does not display the full path, it’s just something like

“/data/data/de.dotnetco/files/myapp.db3”

So at which location does Android emulator store the SQLite .db3 database? As it’s stored within the emulator, it’s not too easy to access it from your host computer. Therefore I prefer debugging my SQLite database on the iOS Simulator. As it’s Xamarin Forms, behaviour of SQLite in Android and iOS should be the same so I’ll use the easier way 🙂 Nevertheless there might be circumstances where you want to have access to the SQLite database also an Android.

How to access Xamarin Forms Android Emulator files and databases?

To access files (and databases) on your Xamarin Forms Android Emulator you need to use the Android Debug Bridge, better known as ‘adb’. It’s installed with Android SDK so you should have it already on your Mac. If you open Terminal and just type “adb” you will probably get “command not found” so there is a little bit to do.

Use adb on Mac for Xamarin Development

To make it short: In Visual Studio for Mac, click “Tools” and select “SDK Command Prompt” within “Android” section. In theory, this should open a command prompt at your android installation so you could use adb at command prompt.

In my case, the command prompt just opens in my user directory so I could not use adb there. Instead, I have to manually navigate: To find your Android SDK location, open Visual Studio for Mac and select “Preferences”. In “Projects” you will find “SDK Locations”. Open the “Android” section and have a look at tab “Android SDK Location”. It should be located in path “/Users/[username]/Library/Developer/Xamarin/android-sdk-macosx”.

With subdirectory “platform-tools” (not “tools”) you should find adb. So at your command prompt, just enter “cd Library/Developer/Xamarin/android-sdk-macosx/platform-tools”.

To check whether it works as expected, enter “./adb devices”. It should return a list of attached android devices, both physical hardware and also all running android emulators on your Mac.

So how could we access the sqlite database on android emulator now? As already written above, your database location on your emulator might be something like “/data/data/de.dotnetco/files/myapp.db3”. So in your command prompt, use “pull” to a copy of your SQlite database to your mac, e.g.:

./adb pull /data/data/de.dotnetco/files/myapp.db3 /Users/[username]/Downloads/myapp.db3

 

will copy the database to your local download folder.

 

How to open SQLite .db3 database on Mac?

So now we know where it’s located, but how can we browse the SQLite database? I’m using an app called “Datum – SQLite“, available on the App Store. It works quite fine for an affordable price of just 5,49€. Unfortunately it does not seem to be supported anymore because the website does not exist anymore. But it’s still working fine. However, there should not be too many changes so even with the latest version from 13. February 2016, it did not ran into any problems. I could open my database, delete records, update items etc. So for me it’s fine. You might have a look around for any other SQLite Database browser, e.g. sqlitebrowser.org or SQLiteStudio. Both are free and open-source, hosted at Github, but currently I’m happy with Datum so please check on your own.

 

 

Leave a Comment