我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到sqlite数据库。
我们在开发通讯录的时候,就希望通讯录在联网或者断网的时候,都可以查询通讯录的信息。那就需要将通讯录的内容要同步到本地,sqlite是比较轻便的数据库,非常利于存储在本地。解决方案很简单,联网的时候,我直接访问sql server数据库服务器,但是在网络不通的时候,我们只需要读取sqlite的数据就可以了。
(1)创建sqlite表
我下载了一个sqlite Expert Professional 3工具,直接创建存储通讯录信息的表。sqlite Expert Professional 3工具挺好用的,不过正式版是需要钱的。在创建数据表的过程中,我们要注意的地方就是DataTime类型的数据如何保存。在sqlite数据库里面,我认为最好的方式就是将日期保存为字符串就好了,如果需要的时候,取出来再处理。
(2)引入dll
在使用sqlite数据库的时候,我们在项目工程中引入System.Data.sqlite.dll
这是我们这篇文章最重要的内容,就是分享一下sqlite操作的基本类,代码如下:
using System; using System.Collections.Generic; using System.Text; using System.Data.sqlite; using System.Data; namespace AddressBook { class sqliteHelper { private sqliteConnection conn = null; private string connString = string.Empty; public string ConnString { get { return connString; } set { connString = value; } } private string err = string.Empty; public string Err { get { return err; } set { err = value; } } public sqliteHelper() { string connString = "Data Source =" + Environment.CurrentDirectory + "/AddressBook.db"; conn = new sqliteConnection(connString);//创建数据库实例,指定文件位置 //conn.Open();//打开数据库,若文件不存在会自动创建 } /// <summary> /// 操作数据库 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int ExecNoQuery(string sql) { int retValue = -1; try { conn.Open(); sqliteCommand cmd = new sqliteCommand(sql,conn); retValue = cmd.ExecuteNonQuery(); conn.Close(); } catch (Exception ex) { err = ex.Message; return -1; } return retValue; } /// <summary> /// 获取科室数据 /// </summary> /// <returns></returns> public DataSet GetDataSet(string sql) { try { DataSet dataset = new DataSet(); sqliteDataAdapter adapter = new sqliteDataAdapter(); adapter.SelectCommand = new sqliteCommand(sql,conn); adapter.Fill(dataset); return dataset; } catch (Exception ex) { err = ex.Message; return null; } } /// <summary> /// 返回1个字符串 /// </summary> /// <param name="sql"></param> /// <returns></returns> public string ExecReturenOne(string sql) { string result = string.Empty; try { conn.Open(); sqliteCommand cmd = new sqliteCommand(sql,conn); object obj = cmd.ExecuteScalar(); if (obj != null) { result = obj.ToString(); } conn.Close(); } catch (Exception ex) { if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); } err = ex.Message; return ""; } return result; } } }