Serve un esempio di sqlite con Monodroid

Qualcuno può indicarmi un esempio di utilizzo di sqlite con Monodroid? Non sono riuscito a trovarne neanche uno.

Ovviamente ho bisogno di aggiungere una demo SQLite all’esempio ApiDemo.

Dato che non so quando succederà, ecco la versione veloce e sporca:

Tuttavia, per utilizzare il seguente codice devi utilizzare Android 2.2 o versioni successive per utilizzare Mono.Data.Sqlite. Se devi scegliere come target una versione precedente di Android, dovresti esaminare una sostituzione completamente gestita, come ad esempio sqlite gestito .

Inoltre, questo esempio utilizza Mono.Data.Sqlite.dll , incluso nel MonoDroid SDK.

Innanzitutto, modificare i riferimenti all’assembly del progetto e aggiungere un riferimento per Mono.Data.Sqlite.dll e System.Data.dll .

In secondo luogo, all’interno del codice sorgente, aggiungi:

 using System.Data; using Mono.Data.Sqlite; 

Infine, usa il normale codice ADO.NET:

 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 TextView using (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 ();