SQLite访问封装类

转载 2011年01月07日 18:17:00

http://www.cnblogs.com/jackdong/archive/2010/10/08/1845787.html

  SQLite作为windows mobile的数据库,是一种不错的选择。SQLite的下载地址为:SQLite,SQLite的ADO.net Provider下载地址为:System.Data.SQLite ,在发布程序时,请别忘记拷贝SQLite.Interop.06.DLL、system.data.sqlite.dll两个文件到安装目录下。
    本文非原创,而是参考egmkang撰写的 WM下访问SQLite(一种替代SQL CE的解决方案)  ,并根据我自己的编程需要和习惯做了少许修改,错误在所难免。下面实现的是一个SQLiteHelper封装类:

using System.Data;
using System.Data.SQLite;
using System.IO;
  
namespace MyHelper.DataAccess
{
    public class SQLiteHelper
    {
        private static string password = "***"//请修改***为实际密码
        private static string dbFilePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()
            .GetName().CodeBase) + "//***.db"//请修改***为实际SQLite数据库名
        private static string connectString = string.Format("Data Source =/"{}/"", dbFilePath, password);
        private static SQLiteConnection myConnect = new SQLiteConnection(connectString);
  
        /**//// <summary>
        /// 取当前SQLite连接
        /// </summary>
        /// <returns>当前SQLite连接</returns>
        public static SQLiteConnection GetConnection()
        {
            return myConnect;
        }
  
        /**//// <summary>
        /// 执行SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="commandString">SQL语句</param>
        /// <param name="parameters">SQL语句参数</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(string commandString, params SQLiteParameter[] parameters)
        {
            int result = ;
            using (SQLiteCommand command = new SQLiteCommand())
            {
                PrepareCommand(command, null, commandString, parameters);
                result = command.ExecuteNonQuery();
                command.Parameters.Clear();
            }
            return result;
        }
  
        /**//// <summary>
        /// 执行带事务的SQL语句,返回受影响的行数
        /// </summary>
        /// <param name="transaction">SQL事务</param>
        /// <param name="commandString">SQL语句</param>
        /// <param name="parameters">SQL语句参数</param>
        /// <returns>受影响的行数</returns>
        public static int ExecuteNonQuery(SQLiteTransaction transaction, string commandString,
            params SQLiteParameter[] parameters)
        {
            int result = ;
            using (SQLiteCommand command = new SQLiteCommand())
            {
                PrepareCommand(command, transaction, commandString, parameters);
                result = command.ExecuteNonQuery();
                command.Parameters.Clear();
            }
            return result;
        }
  
        /**//// <summary>
        /// 执行查询,并返回结果集的第一行第一列的值,忽略其它所有的行和列
        /// </summary>
        /// <param name="commandString">SQL语句</param>
        /// <param name="parameters">SQL语句参数</param>
        /// <returns>第一行第一列的值</returns>
        public static object ExecuteScalar(string commandString, params SQLiteParameter[] parameters)
        {
            object result;
            using (SQLiteCommand command = new SQLiteCommand())
            {
                PrepareCommand(command, null, commandString, parameters);
                result = command.ExecuteScalar();
            }
            return result;
        }
  
        /**//// <summary>
        /// 执行SQL语句,返回结果集的DataReader
        /// </summary>
        /// <param name="commandString">SQL语句</param>
        /// <param name="parameters">SQL语句参数</param>
        /// <returns>结果集的DataReader</returns>
        public static SQLiteDataReader ExecuteReader(string commandString, params SQLiteParameter[] parameters)
        {
            SQLiteCommand command = new SQLiteCommand();
            try
            {
                PrepareCommand(command, null, commandString, parameters);
                SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
                command.Parameters.Clear();
                return reader;
            }
            catch
            {
                throw;
            }
        }
  
        /**//// <summary>
        /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化
        /// </summary>
        /// <param name="command">Command对象</param>
        /// <param name="transaction">transaction对象</param>
        /// <param name="commandString">SQL语句</param>
        /// <param name="parameters">SQL语句参数</param>
        private static void PrepareCommand(SQLiteCommand command, SQLiteTransaction transaction,
            string commandString, params SQLiteParameter[] parameters)
        {
            if (myConnect.State != ConnectionState.Open)
                myConnect.Open();
  
            command.Connection = myConnect;
            command.CommandText = commandString;
  
            if (transaction != null)
                command.Transaction = transaction;
            if (parameters != null && parameters.Length > )
            {
                command.Parameters.AddRange(parameters);
            }
        }
    }
}

    为了提高效率,我将数据库连接修改为长连接。这样,只有第一次连接时会比较耗时,以后的操作就比较快了。如果本文有错误的地方,请大家参考egmkang原文。

C# SQLite数据库 访问封装类

在客户端配置文件节点下,添加: 其中【localdb】是本地SQLite数据库的名称,【config/local.db】是在当前程序运行目录下SQLite数据库位置C# SQLite数据库  访问...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年10月26日 20:25
  • 4930

C#访问SQLite完整增删改查代码

以下代码都是经过我测试可用的; 一 一个控制台示例 using System; using System.Data.SQLite; namespace SQLiteSamples { c...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年08月13日 21:44
  • 9148

C# SQLite 简单封装

SQLiteHelper类 1 using System; 2 using System.Configuration; 3 using System.Data; 4 using Syst...
  • weisenz
  • weisenz
  • 2014年02月21日 16:06
  • 364

C#SQLite操作类

//引用.NETSQLite SDK,命名空间是System.Data.SQLite; using System; using System.Collections; using System.Co...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年03月15日 14:33
  • 1065

SQLite访问封装类

SQLite访问封装类
  • cpcpc
  • cpcpc
  • 2011年01月07日 18:17
  • 1264

一个封装类教你学会SQLite数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 数据库操作类的命名一般以Dao为结尾,什么是Dao呢? DAO(Data Access Object) 数...
  • qq944639839
  • qq944639839
  • 2017年03月15日 14:14
  • 120

老外写的SQLite3封装类

源代码链接: http://www.adp-gmbh.ch/sqlite/wrapper.html/* SQLiteWrapper.h Copyright (C) 2004 Re...
  • tqy2011
  • tqy2011
  • 2011年11月25日 21:50
  • 8923

一个封装类教你学会SQLite数据库

数据库操作类的命名一般以Dao为结尾,什么是Dao呢?DAO(Data Access Object) 数据访问对象是第一个面向对象的数据库接口数据实体类public class Tree { ...
  • pengkv
  • pengkv
  • 2016年02月26日 14:15
  • 4994

操作SQLite数据所需要的C++封装类

  • 2012年07月06日 16:29
  • 222KB
  • 下载

十八、封装SQLite

把一些数据放在本地数据库,当离线时,展示缓存的数据给用户,不至于什么内容都没有。 首先创建数据库类,每次新登录的用户创建不同的数据库: public class KengOpenHelper exte...
  • yu75567218
  • yu75567218
  • 2016年08月18日 13:40
  • 116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQLite访问封装类
举报原因:
原因补充:

(最多只允许输入30个字)