我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到sqlite数据库。
我们在开发通讯录的时候,就希望通讯录在联网或者断网的时候,都可以查询通讯录的信息。那就需要将通讯录的内容要同步到本地,sqlite是比较轻便的数据库,非常利于存储在本地。解决方案很简单,联网的时候,我直接访问sql server数据库服务器,但是在网络不通的时候,我们只需要读取sqlite的数据就可以了。
(1)创建sqlite表
我下载了一个SQLite Expert Professional 3工具,直接创建存储通讯录信息的表。SQLite Expert Professional 3工具挺好用的,不过正式版是需要钱的。在创建数据表的过程中,我们要注意的地方就是DataTime类型的数据如何保存。在sqlite数据库里面,我认为最好的方式就是将日期保存为字符串就好了,如果需要的时候,取出来再处理。
(2)引入dll
在使用sqlite数据库的时候,我们在项目工程中引入System.Data.SQLite.dll
(3)C#使用sqlite数据库的类
这是我们这篇文章最重要的内容,就是分享一下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>
/// <returns></returns>
public int CreateTables(string sql)
{
SQLiteCommand cmdCreateTable = new SQLiteCommand(sql, conn);
cmdCreateTable.ExecuteNonQuery();//如果表不存在,创建数据表
return 1;
}
/// <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;
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/panliuwen/article/details/47791173