Need an example of sqlite with Monodroid

前端 未结 1 505
小蘑菇
小蘑菇 2020-12-05 03:39

Can anyone point me to an example of using sqlite with Monodroid? I\'ve been unable to find even one.

相关标签:
1条回答
  • 2020-12-05 03:49

    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 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 ();
    
    0 讨论(0)
提交回复
热议问题