C# SQLite数据库 访问封装类

在客户端配置文件<configuration>节点下,添加:

[html]  view plain  copy
  1. <connectionStrings>  
  2.     <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerName="System.Data.SQLite.SQLiteFactory"/>  
  3. </connectionStrings>  
其中【localdb】是本地SQLite数据库的名称,【config/local.db】是在当前程序运行目录下SQLite数据库位置

C# SQLite数据库  访问封装类代码:

[csharp]  view plain  copy
  1. /// <summary>  
  2.    /// 本类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化  
  3.    /// </summary>  
  4.    public static class SQLiteHelper  
  5.    {  
  6.        // Application.StartupPath  
  7.        public static string LocalDbConnectionString = ConfigurationManager.ConnectionStrings["localdb"].ConnectionString;  
  8.  
  9.        #region ExecuteNonQuery  
  10.        /// <summary>  
  11.        /// 执行数据库操作(新增、更新或删除)  
  12.        /// </summary>  
  13.        /// <param name="connectionString">连接字符串</param>  
  14.        /// <param name="cmd">SqlCommand对象</param>  
  15.        /// <returns>所受影响的行数</returns>  
  16.        public static int ExecuteNonQuery(string connectionString, SQLiteCommand cmd)  
  17.        {  
  18.            int result = 0;  
  19.            if (connectionString == null || connectionString.Length == 0)  
  20.                throw new ArgumentNullException("connectionString");  
  21.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  22.            {  
  23.                SQLiteTransaction trans = null;  
  24.                PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);  
  25.                try  
  26.                {  
  27.                    result = cmd.ExecuteNonQuery();  
  28.                    trans.Commit();  
  29.                }  
  30.                catch (Exception ex)  
  31.                {  
  32.                    trans.Rollback();  
  33.                    throw ex;  
  34.                }  
  35.            }  
  36.            return result;  
  37.        }  
  38.   
  39.        /// <summary>  
  40.        /// 执行数据库操作(新增、更新或删除)  
  41.        /// </summary>  
  42.        /// <param name="connectionString">连接字符串</param>  
  43.        /// <param name="commandText">执行语句或存储过程名</param>  
  44.        /// <param name="commandType">执行类型</param>  
  45.        /// <returns>所受影响的行数</returns>  
  46.        public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType)  
  47.        {  
  48.            int result = 0;  
  49.            if (connectionString == null || connectionString.Length == 0)  
  50.                throw new ArgumentNullException("connectionString");  
  51.            if (commandText == null || commandText.Length == 0)  
  52.                throw new ArgumentNullException("commandText");  
  53.            SQLiteCommand cmd = new SQLiteCommand();  
  54.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  55.            {  
  56.                SQLiteTransaction trans = null;  
  57.                PrepareCommand(cmd, con, ref trans, true, commandType, commandText);  
  58.                try  
  59.                {  
  60.                    result = cmd.ExecuteNonQuery();  
  61.                    trans.Commit();  
  62.                }  
  63.                catch (Exception ex)  
  64.                {  
  65.                    trans.Rollback();  
  66.                    throw ex;  
  67.                }  
  68.            }  
  69.            return result;  
  70.        }  
  71.   
  72.        /// <summary>  
  73.        /// 执行数据库操作(新增、更新或删除)  
  74.        /// </summary>  
  75.        /// <param name="connectionString">连接字符串</param>  
  76.        /// <param name="commandText">执行语句或存储过程名</param>  
  77.        /// <param name="commandType">执行类型</param>  
  78.        /// <param name="cmdParms">SQL参数对象</param>  
  79.        /// <returns>所受影响的行数</returns>  
  80.        public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)  
  81.        {  
  82.            int result = 0;  
  83.            if (connectionString == null || connectionString.Length == 0)  
  84.                throw new ArgumentNullException("connectionString");  
  85.            if (commandText == null || commandText.Length == 0)  
  86.                throw new ArgumentNullException("commandText");  
  87.   
  88.            SQLiteCommand cmd = new SQLiteCommand();  
  89.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  90.            {  
  91.                SQLiteTransaction trans = null;  
  92.                PrepareCommand(cmd, con, ref trans, true, commandType, commandText);  
  93.                try  
  94.                {  
  95.                    result = cmd.ExecuteNonQuery();  
  96.                    trans.Commit();  
  97.                }  
  98.                catch (Exception ex)  
  99.                {  
  100.                    trans.Rollback();  
  101.                    throw ex;  
  102.                }  
  103.            }  
  104.            return result;  
  105.        }  
  106.        #endregion  
  107.  
  108.        #region ExecuteScalar  
  109.        /// <summary>  
  110.        /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据  
  111.        /// </summary>  
  112.        /// <param name="connectionString">连接字符串</param>  
  113.        /// <param name="cmd">SqlCommand对象</param>  
  114.        /// <returns>查询所得的第1行第1列数据</returns>  
  115.        public static object ExecuteScalar(string connectionString, SQLiteCommand cmd)  
  116.        {  
  117.            object result = 0;  
  118.            if (connectionString == null || connectionString.Length == 0)  
  119.                throw new ArgumentNullException("connectionString");  
  120.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  121.            {  
  122.                SQLiteTransaction trans = null;  
  123.                PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);  
  124.                try  
  125.                {  
  126.                    result = cmd.ExecuteScalar();  
  127.                    trans.Commit();  
  128.                }  
  129.                catch (Exception ex)  
  130.                {  
  131.                    trans.Rollback();  
  132.                    throw ex;  
  133.                }  
  134.            }  
  135.            return result;  
  136.        }  
  137.   
  138.        /// <summary>  
  139.        /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据  
  140.        /// </summary>  
  141.        /// <param name="connectionString">连接字符串</param>  
  142.        /// <param name="commandText">执行语句或存储过程名</param>  
  143.        /// <param name="commandType">执行类型</param>  
  144.        /// <returns>查询所得的第1行第1列数据</returns>  
  145.        public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType)  
  146.        {  
  147.            object result = 0;  
  148.            if (connectionString == null || connectionString.Length == 0)  
  149.                throw new ArgumentNullException("connectionString");  
  150.            if (commandText == null || commandText.Length == 0)  
  151.                throw new ArgumentNullException("commandText");  
  152.            SQLiteCommand cmd = new SQLiteCommand();  
  153.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  154.            {  
  155.                SQLiteTransaction trans = null;  
  156.                PrepareCommand(cmd, con, ref trans, true, commandType, commandText);  
  157.                try  
  158.                {  
  159.                    result = cmd.ExecuteScalar();  
  160.                    trans.Commit();  
  161.                }  
  162.                catch (Exception ex)  
  163.                {  
  164.                    trans.Rollback();  
  165.                    throw ex;  
  166.                }  
  167.            }  
  168.            return result;  
  169.        }  
  170.   
  171.        /// <summary>  
  172.        /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据  
  173.        /// </summary>  
  174.        /// <param name="connectionString">连接字符串</param>  
  175.        /// <param name="commandText">执行语句或存储过程名</param>  
  176.        /// <param name="commandType">执行类型</param>  
  177.        /// <param name="cmdParms">SQL参数对象</param>  
  178.        /// <returns>查询所得的第1行第1列数据</returns>  
  179.        public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)  
  180.        {  
  181.            object result = 0;  
  182.            if (connectionString == null || connectionString.Length == 0)  
  183.                throw new ArgumentNullException("connectionString");  
  184.            if (commandText == null || commandText.Length == 0)  
  185.                throw new ArgumentNullException("commandText");  
  186.   
  187.            SQLiteCommand cmd = new SQLiteCommand();  
  188.            using (SQLiteConnection con = new SQLiteConnection(connectionString))  
  189.            {  
  190.                SQLiteTransaction trans = null;  
  191.                PrepareCommand(cmd, con, ref trans, true, commandType, commandText);  
  192.                try  
  193.                {  
  194.                    result = cmd.ExecuteScalar();  
  195.                    trans.Commit();  
  196.                }  
  197.                catch (Exception ex)  
  198.                {  
  199.                    trans.Rollback();  
  200.                    throw ex;  
  201.                }  
  202.            }  
  203.            return result;  
  204.        }  
  205.        #endregion  
  206.  
  207.        #region ExecuteReader  
  208.        /// <summary>  
  209.        /// 执行数据库查询,返回SqlDataReader对象  
  210.        /// </summary>  
  211.        /// <param name="connectionString">连接字符串</param>  
  212.        /// <param name="cmd">SqlCommand对象</param>  
  213.        /// <returns>SqlDataReader对象</returns>  
  214.        public static DbDataReader ExecuteReader(string connectionString, SQLiteCommand cmd)  
  215.        {  
  216.            DbDataReader reader = null;  
  217.            if (connectionString == null || connectionString.Length == 0)  
  218.                throw new ArgumentNullException("connectionString");  
  219.   
  220.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  221.            SQLiteTransaction trans = null;  
  222.            PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);  
  223.            try  
  224.            {  
  225.                reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  226.            }  
  227.            catch (Exception ex)  
  228.            {  
  229.                throw ex;  
  230.            }  
  231.            return reader;  
  232.        }  
  233.   
  234.        /// <summary>  
  235.        /// 执行数据库查询,返回SqlDataReader对象  
  236.        /// </summary>  
  237.        /// <param name="connectionString">连接字符串</param>  
  238.        /// <param name="commandText">执行语句或存储过程名</param>  
  239.        /// <param name="commandType">执行类型</param>  
  240.        /// <returns>SqlDataReader对象</returns>  
  241.        public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType)  
  242.        {  
  243.            DbDataReader reader = null;  
  244.            if (connectionString == null || connectionString.Length == 0)  
  245.                throw new ArgumentNullException("connectionString");  
  246.            if (commandText == null || commandText.Length == 0)  
  247.                throw new ArgumentNullException("commandText");  
  248.   
  249.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  250.            SQLiteCommand cmd = new SQLiteCommand();  
  251.            SQLiteTransaction trans = null;  
  252.            PrepareCommand(cmd, con, ref trans, false, commandType, commandText);  
  253.            try  
  254.            {  
  255.                reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  256.            }  
  257.            catch (Exception ex)  
  258.            {  
  259.                throw ex;  
  260.            }  
  261.            return reader;  
  262.        }  
  263.   
  264.        /// <summary>  
  265.        /// 执行数据库查询,返回SqlDataReader对象  
  266.        /// </summary>  
  267.        /// <param name="connectionString">连接字符串</param>  
  268.        /// <param name="commandText">执行语句或存储过程名</param>  
  269.        /// <param name="commandType">执行类型</param>  
  270.        /// <param name="cmdParms">SQL参数对象</param>  
  271.        /// <returns>SqlDataReader对象</returns>  
  272.        public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)  
  273.        {  
  274.            DbDataReader reader = null;  
  275.            if (connectionString == null || connectionString.Length == 0)  
  276.                throw new ArgumentNullException("connectionString");  
  277.            if (commandText == null || commandText.Length == 0)  
  278.                throw new ArgumentNullException("commandText");  
  279.   
  280.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  281.            SQLiteCommand cmd = new SQLiteCommand();  
  282.            SQLiteTransaction trans = null;  
  283.            PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);  
  284.            try  
  285.            {  
  286.                reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  287.            }  
  288.            catch (Exception ex)  
  289.            {  
  290.                throw ex;  
  291.            }  
  292.            return reader;  
  293.        }  
  294.        #endregion  
  295.  
  296.        #region ExecuteDataSet  
  297.        /// <summary>  
  298.        /// 执行数据库查询,返回DataSet对象  
  299.        /// </summary>  
  300.        /// <param name="connectionString">连接字符串</param>  
  301.        /// <param name="cmd">SqlCommand对象</param>  
  302.        /// <returns>DataSet对象</returns>  
  303.        public static DataSet ExecuteDataSet(string connectionString, SQLiteCommand cmd)  
  304.        {  
  305.            DataSet ds = new DataSet();  
  306.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  307.            SQLiteTransaction trans = null;  
  308.            PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);  
  309.            try  
  310.            {  
  311.                SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);  
  312.                sda.Fill(ds);  
  313.            }  
  314.            catch (Exception ex)  
  315.            {  
  316.                throw ex;  
  317.            }  
  318.            finally  
  319.            {  
  320.                if (cmd.Connection != null)  
  321.                {  
  322.                    if (cmd.Connection.State == ConnectionState.Open)  
  323.                    {  
  324.                        cmd.Connection.Close();  
  325.                    }  
  326.                }  
  327.            }  
  328.            return ds;  
  329.        }  
  330.   
  331.        /// <summary>  
  332.        /// 执行数据库查询,返回DataSet对象  
  333.        /// </summary>  
  334.        /// <param name="connectionString">连接字符串</param>  
  335.        /// <param name="commandText">执行语句或存储过程名</param>  
  336.        /// <param name="commandType">执行类型</param>  
  337.        /// <returns>DataSet对象</returns>  
  338.        public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType)  
  339.        {  
  340.            if (connectionString == null || connectionString.Length == 0)  
  341.                throw new ArgumentNullException("connectionString");  
  342.            if (commandText == null || commandText.Length == 0)  
  343.                throw new ArgumentNullException("commandText");  
  344.            DataSet ds = new DataSet();  
  345.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  346.            SQLiteCommand cmd = new SQLiteCommand();  
  347.            SQLiteTransaction trans = null;  
  348.            PrepareCommand(cmd, con, ref trans, false, commandType, commandText);  
  349.            try  
  350.            {  
  351.                SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);  
  352.                sda.Fill(ds);  
  353.            }  
  354.            catch (Exception ex)  
  355.            {  
  356.                throw ex;  
  357.            }  
  358.            finally  
  359.            {  
  360.                if (con != null)  
  361.                {  
  362.                    if (con.State == ConnectionState.Open)  
  363.                    {  
  364.                        con.Close();  
  365.                    }  
  366.                }  
  367.            }  
  368.            return ds;  
  369.        }  
  370.   
  371.        /// <summary>  
  372.        /// 执行数据库查询,返回DataSet对象  
  373.        /// </summary>  
  374.        /// <param name="connectionString">连接字符串</param>  
  375.        /// <param name="commandText">执行语句或存储过程名</param>  
  376.        /// <param name="commandType">执行类型</param>  
  377.        /// <param name="cmdParms">SQL参数对象</param>  
  378.        /// <returns>DataSet对象</returns>  
  379.        public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)  
  380.        {  
  381.            if (connectionString == null || connectionString.Length == 0)  
  382.                throw new ArgumentNullException("connectionString");  
  383.            if (commandText == null || commandText.Length == 0)  
  384.                throw new ArgumentNullException("commandText");  
  385.            DataSet ds = new DataSet();  
  386.            SQLiteConnection con = new SQLiteConnection(connectionString);  
  387.            SQLiteCommand cmd = new SQLiteCommand();  
  388.            SQLiteTransaction trans = null;  
  389.            PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);  
  390.            try  
  391.            {  
  392.                SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);  
  393.                sda.Fill(ds);  
  394.            }  
  395.            catch (Exception ex)  
  396.            {  
  397.                throw ex;  
  398.            }  
  399.            finally  
  400.            {  
  401.                if (con != null)  
  402.                {  
  403.                    if (con.State == ConnectionState.Open)  
  404.                    {  
  405.                        con.Close();  
  406.                    }  
  407.                }  
  408.            }  
  409.            return ds;  
  410.        }  
  411.        #endregion  
  412.  
  413.        #region 通用分页查询方法  
  414.        /// <summary>  
  415.        /// 通用分页查询方法  
  416.        /// </summary>  
  417.        /// <param name="connString">连接字符串</param>  
  418.        /// <param name="tableName">表名</param>  
  419.        /// <param name="strColumns">查询字段名</param>  
  420.        /// <param name="strWhere">where条件</param>  
  421.        /// <param name="strOrder">排序条件</param>  
  422.        /// <param name="pageSize">每页数据数量</param>  
  423.        /// <param name="currentIndex">当前页数</param>  
  424.        /// <param name="recordOut">数据总量</param>  
  425.        /// <returns>DataTable数据表</returns>  
  426.        public static DataTable SelectPaging(string connString, string tableName, string strColumns, string strWhere, string strOrder, int pageSize, int currentIndex, out int recordOut)  
  427.        {  
  428.            DataTable dt = new DataTable();  
  429.            recordOut = Convert.ToInt32(ExecuteScalar(connString, "select count(*) from " + tableName, CommandType.Text));  
  430.            string pagingTemplate = "select {0} from {1} where {2} order by {3} limit {4} offset {5} ";  
  431.            int offsetCount = (currentIndex - 1) * pageSize;  
  432.            string commandText = String.Format(pagingTemplate, strColumns, tableName, strWhere, strOrder, pageSize.ToString(), offsetCount.ToString());  
  433.            using (DbDataReader reader = ExecuteReader(connString, commandText, CommandType.Text))  
  434.            {  
  435.                if (reader != null)  
  436.                {  
  437.                    dt.Load(reader);  
  438.                }  
  439.            }  
  440.            return dt;  
  441.        }  
  442.        #endregion  
  443.  
  444.        #region  预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化  
  445.        /// <summary>  
  446.        /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化  
  447.        /// </summary>  
  448.        /// <param name="cmd">Command对象</param>  
  449.        /// <param name="conn">Connection对象</param>  
  450.        /// <param name="trans">Transcation对象</param>  
  451.        /// <param name="useTrans">是否使用事务</param>  
  452.        /// <param name="cmdType">SQL字符串执行类型</param>  
  453.        /// <param name="cmdText">SQL Text</param>  
  454.        /// <param name="cmdParms">SQLiteParameters to use in the command</param>  
  455.        private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, ref SQLiteTransaction trans, bool useTrans, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)  
  456.        {  
  457.   
  458.            if (conn.State != ConnectionState.Open)  
  459.                conn.Open();  
  460.   
  461.            cmd.Connection = conn;  
  462.            cmd.CommandText = cmdText;  
  463.   
  464.            if (useTrans)  
  465.            {  
  466.                trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);  
  467.                cmd.Transaction = trans;  
  468.            }  
  469.   
  470.   
  471.            cmd.CommandType = cmdType;  
  472.   
  473.            if (cmdParms != null)  
  474.            {  
  475.                foreach (SQLiteParameter parm in cmdParms)  
  476.                    cmd.Parameters.Add(parm);  
  477.            }  
  478.        }  
  479.  
  480.        #endregion  
  481.    }  

使用demo:

[csharp]  view plain  copy
  1. /// <summary>  
  2.        /// 获取数据库关键字信息  
  3.        /// </summary>  
  4.        /// <param name="category">分类</param>  
  5.        /// <param name="versions">版本</param>  
  6.        /// <returns></returns>  
  7.        private DataSet GetSystemDataBaseKeyWords(string category, string versions)  
  8.        {  
  9.            StringBuilder sql = new StringBuilder();  
  10.            sql.Append("SELECT Keywords , Versions , Type , Description , Category  , Id , Extends ");  
  11.            sql.Append(" FROM A_DataBaseKeyWords ");  
  12.            sql.AppendFormat(" WHERE 1={0} ""1");  
  13.            if (!String.IsNullOrEmpty(category))  
  14.            {  
  15.                sql.AppendFormat(" AND Category='{0}'", category);  
  16.            }  
  17.            if (!String.IsNullOrEmpty(versions))  
  18.            {  
  19.                sql.AppendFormat(" AND Versions='{0}'", versions);  
  20.            }  
  21.            return SQLiteHelper.ExecuteDataSet(SQLiteHelper.LocalDbConnectionString, sql.ToString(), CommandType.Text);  
  22.        }  

小注:

为了屏蔽32与64位系统问题,请使用改SQLite的dll,下载地址:点击打开链接

from:https://blog.csdn.net/jiankunking/article/details/49423087




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值