Create a Database with ADO.NET in Xamarin Android

First we need WriteExternalStorage Permission

Add a reference to System.Data and to Mono.Data.SQLite

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// with Android.Graphics & Android.Environment
var docsFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
var pathToDatabase = System.IO.Path.Combine(docsFolder, "db_adonet.db");
SqliteConnection.CreateFile(pathToDatabase);
// without Android.Graphics & Android.Environment
using System.IO;
var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db");
SqliteConnection.CreateFile(pathToDatabase);
// with Android.Graphics & Android.Environment var docsFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); var pathToDatabase = System.IO.Path.Combine(docsFolder, "db_adonet.db"); SqliteConnection.CreateFile(pathToDatabase); // without Android.Graphics & Android.Environment using System.IO; var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db"); SqliteConnection.CreateFile(pathToDatabase);
// with Android.Graphics & Android.Environment
var docsFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
var pathToDatabase = System.IO.Path.Combine(docsFolder, "db_adonet.db");
SqliteConnection.CreateFile(pathToDatabase);

// without Android.Graphics & Android.Environment
using System.IO;

var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db");
SqliteConnection.CreateFile(pathToDatabase);
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// with try / catch
try
{
var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db");
SqliteConnection.CreateFile(pathToDatabase);
}
catch (IOException ex)
{
var reason = string.Format("The database failed to create - reason {0}", ex.Message);
Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}
// using File.Exists
if (!File.Exists(pathToDatabase))
{
var reason = string.Format("The database failed to create - reason {0}", ex.Message);
Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}
// with try / catch try { var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db"); SqliteConnection.CreateFile(pathToDatabase); } catch (IOException ex) { var reason = string.Format("The database failed to create - reason {0}", ex.Message); Toast.MakeText(myContext, reason, ToastLength.Long).Show(); } // using File.Exists if (!File.Exists(pathToDatabase)) { var reason = string.Format("The database failed to create - reason {0}", ex.Message); Toast.MakeText(myContext, reason, ToastLength.Long).Show(); }
// with try / catch
try
{
    var docsFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    var pathToDatabase = Path.Combine(docsFolder, "db_adonet.db");
    SqliteConnection.CreateFile(pathToDatabase);
}
catch (IOException ex)
{
    var reason = string.Format("The database failed to create - reason {0}", ex.Message);
    Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}

// using File.Exists
if (!File.Exists(pathToDatabase))
{
    var reason = string.Format("The database failed to create - reason {0}", ex.Message);
    Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// create a connection string for the database
var connectionString = string.Format("Data Source={0};Version=3;", pathToDatabase);
try
{
using (var conn = new SqliteConnection((connectionString)))
{
await conn.OpenAsync();
using (var command = conn.CreateCommand())
{
command.CommandText = "CREATE TABLE People (PersonID INTEGER PRIMARY KEY AUTOINCREMENT, FirstName ntext, LastName ntext)";
command.CommandType = CommandType.Text;
await command.ExecuteNonQueryAsync();
}
}
}
catch (Exception ex)
{
var reason = string.Format("Failed to insert into the database - reason = {0}", ex.Message);
Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}
// create a connection string for the database var connectionString = string.Format("Data Source={0};Version=3;", pathToDatabase); try { using (var conn = new SqliteConnection((connectionString))) { await conn.OpenAsync(); using (var command = conn.CreateCommand()) { command.CommandText = "CREATE TABLE People (PersonID INTEGER PRIMARY KEY AUTOINCREMENT, FirstName ntext, LastName ntext)"; command.CommandType = CommandType.Text; await command.ExecuteNonQueryAsync(); } } } catch (Exception ex) { var reason = string.Format("Failed to insert into the database - reason = {0}", ex.Message); Toast.MakeText(myContext, reason, ToastLength.Long).Show(); }
// create a connection string for the database
var connectionString = string.Format("Data Source={0};Version=3;", pathToDatabase);
            try
{
    using (var conn = new SqliteConnection((connectionString)))
    {
        await conn.OpenAsync();
        using (var command = conn.CreateCommand())
        {
            command.CommandText = "CREATE TABLE People (PersonID INTEGER PRIMARY KEY AUTOINCREMENT, FirstName ntext, LastName ntext)";
            command.CommandType = CommandType.Text;
            await command.ExecuteNonQueryAsync();
        }
    }
}
catch (Exception ex)
{
    var reason = string.Format("Failed to insert into the database - reason = {0}", ex.Message);
    Toast.MakeText(myContext, reason, ToastLength.Long).Show();
}

References :
https://developer.xamarin.com/recipes/android/data/databases/adonet/