时间:2021-07-01 10:21:17 帮助过:16人阅读
我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到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;
- }
- }
- }
版权声明:本文为博主原创文章,未经博主允许不得转载。
.net调用sqlite数据库
标签:c# sqlite 通讯录