Need an example of sqlite with Monodroid
I obviously need to add a SQLite demo to the ApiDemo sample.
Since I don't know when that'll happen, here's the quick and dirty version:
However, to use the following code you must be targeting Android 2.2 or later to use Mono.Data.Sqlite. If you need to target an earlier Android version, you should look into a fully managed replacement, such as managed-sqlite.
Furthermore, this example is using Mono.Data.Sqlite.dll, which is included in the MonoDroid SDK.
First, edit your project assembly references and add a reference for Mono.Data.Sqlite.dll
and System.Data.dll
.
Second, within your source code, add:
using System.Data;using Mono.Data.Sqlite;
Finally, use ye normal ADO.NET code:
string dbPath = Path.Combine ( Environment.GetFolderPath (Environment.SpecialFolder.Personal), "items.db3");bool exists = File.Exists (dbPath);if (!exists) SqliteConnection.CreateFile (dbPath);var connection = new SqliteConnection ("Data Source=" + dbPath);connection.Open ();if (!exists) { // This is the first time the app has run and/or that we need the DB. // Copy a "template" DB from your assets, or programmatically create one. var commands = new[]{ "CREATE TABLE [Items] (Key ntext, Value ntext);", "INSERT INTO [Items] ([Key], [Value]) VALUES ('sample', 'text')" }; foreach (var command in commands) { using (var c = connection.CreateCommand ()) { c.CommandText = command; c.ExecuteNonQuery (); } }}// use `connection`...// here, we'll just append the contents to a TextViewusing (var contents = connection.CreateCommand ()) { contents.CommandText = "SELECT [Key], [Value] from [Items]"; var r = contents.ExecuteReader (); while (r.Read ()) MyTextView.Text += string.Format ("\n\tKey={0}; Value={1}", r ["Key"].ToString (), r ["Value"].ToString ());}connection.Close ();