本文给大家介绍在MonoDevelop环境下操作SQLite数据库的功能,使得在Android中方便的实现对数据的增、删、改、查功能。

  

  数据存储在开发中的重要性我就不再多说了,你懂的。关于Android中的数据存储技术有兴趣或需要的朋友可以查看我以前的一篇博文:http://www.cnblogs.com/hanyonglu/archive/2012/03/01/2374894.html

  今天这个示例是给大家展示在MonoDevelop中操作Sqlite数据库的功能。关于Sqlite数据库大家仍然可以查看我以前的那篇文章,这里不再详述。如果有Android基础的朋友一看这篇文章就能明白,毕竟和用JAVA开发的原理都是一样的;如果没有Android基础的朋友,那么希望这篇文章能给你带来帮助,不过需要明白的是这篇文章是在MonoDevelop中开发的。

  

  首先,我们需要先在MonoDevelop中新建一个解决方案。然后新建一个类命名为:DataBaseHelper。其代码如下所示:

using System;using Android.Database.Sqlite;using Android.App;using Android.Content;using Android.OS;using Android.Runtime;using Android.Views;using Android.Widget;using System.IO;namespace MyDataDemo{    /// <summary>    /// Data base helper.    /// Description:数据库操作类    /// Author:Hanyonglu    /// Date:2012-08-26 15:30:56    /// </summary>    public class DataBaseHelper    {        // Sqlite数据库对象        private SQLiteDatabase dataBase;        private string strQuery;        // 程序跟踪消息        private string message;        private bool isAvailable;        public DataBaseHelper ()        {        }        /// <summary>        /// 构造器创建数据库        /// </summary>        /// <param name='dataBaseName'>        /// Data base name.        /// </param>        public DataBaseHelper (string dataBaseName)        {            try            {                CreateDatabase (dataBaseName);            }            catch (SQLiteException ex)            {                message = ex.Message;            }        }        /// <summary>        /// 获取或设置程序跟踪消息        /// </summary>        /// <value>        /// The message.        /// </value>        public string Message         {            get{ return message;}            set{ message = value;}        }        /// <summary>        /// 获取或设置数据库是否可用的状态        /// </summary>        /// <value>        /// <c>true</c> if this instance is available; otherwise, <c>false</c>.        /// </value>        public bool IsAvailable         {            get{ return isAvailable;}            set{ isAvailable = value;}        }        /// <summary>        /// 创建数据库        /// </summary>        /// <param name='dataBaseName'>        /// Data base name.        /// </param>        public void CreateDatabase (string dataBaseName)        {            try             {                message = "";                string location = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal);                string dataBasePath = Path.Combine (location, dataBaseName);                bool isExistDataBase = File.Exists (dataBasePath);                        if (!isExistDataBase)                 {                    // 如果数据库不存在则直接创建数据库                    dataBase = SQLiteDatabase.OpenOrCreateDatabase (dataBasePath, null);                    // 创建数据表                    strQuery = "CREATE TABLE " +                         "IF NOT EXISTS MyContacts " +                        "(_id INTEGER PRIMARY KEY AUTOINCREMENT,Name VARCHAR,Tel INT,Address VARCHAR);";                    dataBase.ExecSQL (strQuery);                    message = "创建数据库";                }                 else                {                    // 如果数据库存在直接打开                    dataBase = SQLiteDatabase.OpenDatabase (dataBasePath, null, DatabaseOpenFlags.OpenReadwrite);                    message = "打开数据库";                }                isAvailable = true;            }             catch (SQLiteException ex)             {                message = ex.Message;            }        }        /// <summary>        /// 添加一个新联系人信息        /// </summary>        /// <param name='name'>        /// Name.        /// </param>        /// <param name='tel'>        /// Tel.        /// </param>        /// <param name='address'>        /// Address.        /// </param>        public void AddNewPerson (string name, int tel, string address)        {            try            {                strQuery = "INSERT INTO MyContacts (Name,Tel,Address)" +                    "VALUES('" + name + "'," + tel + ",'" + address + "');";                dataBase.ExecSQL (strQuery);                message = "增加了一个新联系人的信息";            }            catch (SQLiteException ex)             {                message = ex.Message;            }        }        /// <summary>        /// 根据id更新一个联系人信息        /// </summary>        /// <param name='id'>        /// Identifier.        /// </param>        /// <param name='name'>        /// Name.        /// </param>        /// <param name='tel'>        /// Tel.        /// </param>        /// <param name='address'>        /// Address.        /// </param>        public void UpdatePerson (int id, string name, int tel, string address)        {            try            {                strQuery = "UPDATE MyContacts SET Name='" + name + "',Tel='" + tel + "',Address='" + address + "' " +                    "WHERE _id='" + id + "';";                dataBase.ExecSQL (strQuery);                message = "更新了一个联系人的信息";            }             catch (SQLiteException ex)             {                message = ex.Message;            }        }        /// <summary>        /// 根据id删除一个联系人信息        /// </summary>        /// <param name='id'>        /// Identifier.        /// </param>        public void DeletePerson (int id)        {            try             {                strQuery = "DELETE FROM MyContacts WHERE _id='" + id + "';";                dataBase.ExecSQL (strQuery);                message = "删除了一个联系人的信息";            }            catch (SQLiteException ex) {                message = ex.Message;            }        }        /// <summary>        /// 获取所有联系人信息        /// </summary>        /// <returns>        /// The all persons.        /// </returns>        public Android.Database.ICursor GetAllPersons ()        {            Android.Database.ICursor cursor = null;            try {                strQuery = "SELECT * FROM MyContacts;";                cursor = dataBase.RawQuery (strQuery, null);                if (cursor != null)                {                    message = "获取所有联系人的信息";                }                else                {                    message = "未找到相应的联系人的信息";                }            }             catch (SQLiteException ex)            {                message = ex.Message;            }            return cursor;        }        /// <summary>        /// 根据模糊查询获取联系人信息        /// </summary>        /// <returns>        /// The like person.        /// </returns>        /// <param name='content'>        /// Content.        /// </param>        /// <param name='value'>        /// Value.        /// </param>        public Android.Database.ICursor GetLikePersons (string content, string value)        {            Android.Database.ICursor cursor = null;            try             {                strQuery = "SELECT * FROM MyContacts WHERE " + content + " LIKE '%" + value + "%';";                cursor = dataBase.RawQuery (strQuery, null);                if (cursor != null)                {                    message = "获取模糊查询的联系人的信息";                }                else                {                    message = "未找到相应的联系人的信息";                }            }            catch (SQLiteException ex)            {                message = ex.Message;            }            return cursor;        }        /// <summary>        /// 释放资源        /// <see cref="MyDataDemo.DataBaseHelper"/> is reclaimed by garbage collection.        /// </summary>        ~DataBaseHelper()        {            try {                message = null;                isAvailable = false;                        dataBase.Close ();                    } catch (SQLiteException ex) {                message = ex.Message;            }        }    }}

  最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/08/26/2657648.html谢谢。

  未完待续。^_^

更多相关文章

  1. Android(安卓)dumpsys命令的使用
  2. 第五章 以数据为中心—数据存取(4)
  3. Android开源:数据库ORM框架GreenDao学习(二)数据库查询篇
  4. 《一》Android(安卓)数据库 SQlite SQLiteOpenHelper
  5. Android系列教程(1):Notification 与状态栏信息
  6. Android(安卓)SQLiteOpenHelper源码解读
  7. 数据存储有几种方式?分别是什么?
  8. GreeDAO详解-----数据库升级详解
  9. Android(安卓)Studio实用配置:让你编码更直观快捷

随机推荐

  1. DenyHosts阻止SSH暴力***
  2. 一文看尽预训练语言模型
  3. centos下部署redis服务环境及其配置说明
  4. 用jQuery的attr()设置option默认选中无效
  5. 一台电脑(服务器)安装2个Mysql
  6. Deemon & CSRF漏洞自动挖掘工具分析
  7. 【MOS】Redundant Interconnect ora.clus
  8. Elasticsearch 最佳运维实践 - 总结(一)
  9. 踩坑CBO,解决那些坑爹的SQL优化问题
  10. Intel Thunderbolt曝出7个漏洞,影响过去9