1、作用

实现SQLite小型数据的操作,包含:创建、读取、修改、写入。如果你想传入临时表(DataTable)、临时数数据集(DataSet)、范式类型(IList)达到更新目的,需要添加 DataOperation类支持,个人也已经封装。

2、引入组件

System.Data.SQLite.dll

SQLite.Interop.dll(该组件如果没有注册可能引入不进去,可以直接放在bin目录即可)

3、帮助类,可以直接创建类SQLiteHelper.cs,复制以下代码:

using AutoPlayer.Common;
using System;
using System.Data;
using System.Data.SQLite;

namespace AutoPlayer.DAL
{
    public class SQLiteHelper
    {
        //从配置文本中读取连接字符串
        private static string connectionString = XmlHelper.GetAppConfig("dbcon");

/// <summary>
        /// 创建一个数据库文件。如果存在同名数据库文件,则会覆盖。
        /// </summary>
        /// <param name="dbName"></param>
        public static void CreateDB(string dbName)
        {
            string l_strdbName = dbName;
            if (!dbName.Contains("."))
            {
                l_strdbName = dbName + ".sqlite3";
            }

try
            {
                SQLiteConnection.CreateFile(l_strdbName);
            }
            catch (Exception)
            {
                throw;
            }
        }

/// <summary>
        /// 创建连接到指定数据库
        /// </summary>
        /// <param name="datasource"></param>
        /// <param name="password"></param>
        /// <param name="version"></param>
        public static void SetConnectionString(string datasource, string password = "", int version = 3)
        {
            connectionString = string.Format("Data Source={0};password={1},Version={2};",
                datasource, password, version);
        }

/// <summary>
        /// 执行命令的方法:insert,update,delete
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters">可变参数,目的是省略了手动构造数组的过程,直接指定对象,编译器会帮助我们构造数组,并将对象加入数组中,传递过来</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string sql, params SQLiteParameter[] parameters)
        {
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection))
                {
                    try
                    {
                        connection.Open();
                        command.CommandText = sql;
                        if (parameters.Length > 0)
                        {
                            command.Parameters.AddRange(parameters);
                        }
                        return command.ExecuteNonQuery();
                    }
                    catch (Exception) { throw; }
                }
            }
        }

/// <summary>
        /// 执行查询语句,并返回第一个结果。
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params SQLiteParameter[] parameters)
        {
            using (SQLiteConnection conn = new SQLiteConnection(connectionString))
            {
                using (SQLiteCommand cmd = new SQLiteCommand(conn))
                {
                    try
                    {
                        conn.Open();
                        cmd.CommandText = sql;
                        if (parameters.Length != 0)
                        {
                            cmd.Parameters.AddRange(parameters);
                        }
                        return cmd.ExecuteScalar();
                    }
                    catch (Exception) { throw; }
                }
            }
        }

/// <summary>
        /// 执行一个查询语句,返回一个包含查询结果的DataTable。 
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static DataTable ExecuteQuery(string sql, params SQLiteParameter[] parameters)
        {
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                using (SQLiteCommand command = new SQLiteCommand(sql, connection))
                {
                    if (parameters.Length != 0)
                    {
                        command.Parameters.AddRange(parameters);
                    }
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    DataTable data = new DataTable();
                    try
                    {
                        adapter.Fill(data);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                    return data;
                }
            }
        }

/// <summary>
        /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例。 
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] parameters)
        {
            SQLiteConnection connection = new SQLiteConnection(connectionString);
            SQLiteCommand command = new SQLiteCommand(sql, connection);
            try
            {
                if (parameters.Length != 0)
                {
                    command.Parameters.AddRange(parameters);
                }
                connection.Open();
                return command.ExecuteReader(CommandBehavior.CloseConnection);
            }
            catch (Exception) { throw; }
        }

/// <summary>
        /// 查询表字段类型
        /// </summary>
        /// <returns></returns>
        public static DataTable GetSchema()
        {
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))
            {
                try
                {
                    connection.Open();
                    return connection.GetSchema("TABLES");
                }
                catch (Exception) { throw; }
            }
        }
    }
}

SQLiteHelper帮助类相关推荐

  1. Android学习之——APP番茄工作法——小结(2)

    上一篇连接: http://blog.csdn.net/fu222cs98/article/details/21053491 继续上一篇 问题十一:在Fragment实现类中中加载资源文件的方式: 在 ...

  2. Kotlin开发第六天,数据存储,持久化

    完整代码Gitee地址:kotlin-demo: 15天Kotlin学习计划 第六天学习内容代码:Chapter6 前言 简介 知识点1:文件存储 知识点2:sharedPreferences存储 知 ...

  3. android开发新浪微博客户端 完整攻略 [新手必读][转]

    开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...

  4. android开发新浪微博客户端 完整攻略

    http://www.eoeandroid.com/forum-viewthread-tid-67298-fromuid-106432.html 开始接触学习android已经有3个礼拜了,一直都是对 ...

  5. android 新浪微博客户端开发

    [转载]android开发新浪微博客户端 完整攻略 分类: android 2011-04-23 22:45 3193人阅读 评论(4) 收藏 举报 开始接触学习android已经有3个礼拜了,一直都 ...

  6. android开发新浪微博客户端

    android开发新浪微博客户端 完整攻略 [新手必读][转]2011-04-06  10:49:19 http://www.eoeandroid.com/forum-viewthread-tid-6 ...

  7. android开发新浪微博客户端 完整攻略 [新手必读]

    android开发新浪微博客户端 完整攻略 [新手必读][转]2011-04-06  10:49:19 http://www.eoeandroid.com/forum-viewthread-tid-6 ...

  8. 【转载】android开发新浪微博客户端 完整攻略

    开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就 ...

  9. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  10. C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库

    这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数 ...

最新文章

  1. 技术图文:如何通过 LINQ 查找集合中的重复数据?
  2. 【Android 异步操作】手写 Handler ( Handler 发送与处理消息 | Handler 初始化 | 完整 Handler 代码 )
  3. Basic认证方式访问url
  4. python中类的定义方法_在Python中定义类变量的正确方法
  5. autowired_@Autowired所有的东西!
  6. 项目中记录影响性能的缓慢数据库查询
  7. 搞清楚一道关于Integer的面试题
  8. java applet html_将图像从Java Applet传递到HTML
  9. mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...
  10. 程序员分析一线城市 1000 +岗位招聘需求,告诉你如何科学找工作
  11. Nginx 原理和架构 | 原力计划
  12. mysql sysbench 1.0.X
  13. 2345浏览器兼容模式怎么设置
  14. 用python做youtube自动化下载器 思路
  15. 秦九韶算法的思想与解多项式算法时间比较附代码
  16. SSHD服务的搭建与管理
  17. python汇率兑换_汇率兑换—python第一课
  18. 5w对讲机需要执照吗
  19. js开发html5游戏,JS开发HTML5游戏《神奇的六边形》(五)
  20. 布莱克斯科尔斯模型(三)热传导方程的解析解

热门文章

  1. 已知直线上两点求直线的一般式方程
  2. 山东交通学院院计算机答辩,山东交通学院教务处关于做好2018届本科毕业生毕业设计(论文)工作的通知...
  3. python论文排版格式_论文排版(一):三分钟了解页面设置
  4. 用实例配置 linux squid 代理服务器
  5. Omni-ID 推出2款有源RFID标签
  6. 如何创建自己的Cydia源
  7. CeoMax总裁WordPress模板3.8.1免受权版本
  8. matlab单字音频合成,基于MATLAB的音频解析与合成
  9. 致敬柳传志三网合一的佳沃品牌之路
  10. 暂时解决Xmarks无法同步