欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net调用sqlite数据库

程序员文章站 2022-04-05 08:12:31
我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到sqlite数据库。 我们在开发通讯录的时候,就希望通讯录在联网或者断网的时候...

我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到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();//打开数据库,若文件不存在会自动创建
        }


        /// 
        /// 操作数据库
        /// 
        ///
        /// 
        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;
        }

        /// 
        /// 获取科室数据
        /// 
        /// 
        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;
            }
        }

        /// 
        /// 返回1个字符串
        /// 
        ///
        /// 
        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;
        }
    }
}