• C#访问sqllite数据库的数据库访问类


             最近在一个项目中需要用到sqllite数据库,因此根据项目需要收集了sqllite的数据库访问类的资料,然后根据实际需求进行了改装,并

    成功的运用到了项目中,现在项目也成功上线,特将此代码分享给大家:

             /// <summary>
        /// 数据库操作抽象
        /// </summary>
        public interface IDataAccess
        {
            /// <summary>
            /// 打开
            /// </summary>
            void Open();
            /// <summary>
            /// 关闭
            /// </summary>
            void Close();

            /// <summary>
            /// 执行 增 删 改 查
            /// </summary>
            /// <param name="sql">Sql语句</param>
            /// <param name="queryParameter">参数</param>
            int ExecuteNonQuery(string sql, QueryParameter[] queryParameter);

            /// <summary>
            /// 查询某一个值
            /// </summary>
            /// <param name="sql">Sql语句</param>
            /// <param name="parameters">参数</param>
            /// <returns>Object</returns>
            object GetScalar(string sql, QueryParameter[] parameters);

            /// <summary>
            /// 查询多条条数据
            /// </summary>
            /// <param name="sql">Sql语句</param>
            /// <param name="parameters">参数</param>
            /// <returns>DataTable</returns>
            DataTable GetTable(string sql, QueryParameter[] parameters);

            /// <summary>
            /// 查询多条值
            /// </summary>
            /// <param name="sql">Sql语句</param>
            /// <param name="parameters">参数</param>
            /// <returns>DataReader</returns>
            IDataReader GetReader(string sql, QueryParameter[] parameters);

            /// <summary>
            /// 开始事务
            /// </summary>
            void BeginTran();
            /// <summary>
            /// 提交事务
            /// </summary>
            void CommitTran();
            /// <summary>
            ///  回滚事务
            /// </summary>
            void RollBackTran();

        }


    public class SqlLiteDalHelper : IDataAccess
        {
            private readonly SQLiteConnection _connection;
            private SQLiteTransaction _tran;
            public SqlLiteDalHelper(string constr)
            {
                _connection = new SQLiteConnection(constr);
            }

            public void Open()
            {
                if (this._connection == null || this._connection.State == ConnectionState.Closed)
                {
                    try
                    {
                        _connection.Open();
                    }
                    catch (ArgumentException)
                    {
                        throw;
                    }
                }
            }

            public void Close()
            {
                if (this._connection != null || _tran != null)
                {
                    _connection.Close();
                }
            }

            public int ExecuteNonQuery(string sql, QueryParameter[] queryParameter)
            {
                SQLiteCommand cmd = new SQLiteCommand();
                PrepareCommond(cmd, CommandType.Text, queryParameter, sql);
                Open();
                int i = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                Close();
                return i;
            }

            public object GetScalar(string sql, QueryParameter[] parameters)
            {
                SQLiteCommand cmd = new SQLiteCommand();
                PrepareCommond(cmd, CommandType.Text, parameters, sql);
                Open();
                object obj = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                Close();
                return obj;
            }

            public System.Data.DataTable GetTable(string sql, QueryParameter[] parameters)
            {
                DataTable dt = new DataTable();
                SQLiteCommand cmd = new SQLiteCommand();
                PrepareCommond(cmd, CommandType.Text, parameters, sql);
                Open();
                SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
                sda.Fill(dt);
                cmd.Parameters.Clear();
                Close();
                return dt;
            }

            public System.Data.IDataReader GetReader(string sql, QueryParameter[] parameters)
            {
                SQLiteCommand cmd = new SQLiteCommand();
                PrepareCommond(cmd, CommandType.Text, parameters, sql);
                Open();
                SQLiteDataReader dr = cmd.ExecuteReader();
                cmd.Parameters.Clear();
                Close();
                return dr;
            }

            public void BeginTran()
            {
                this._tran = this._connection.BeginTransaction();
            }

            public void CommitTran()
            {
                this._tran.Commit();
            }

            public void RollBackTran()
            {
                this._tran.Rollback();
            }

            private void PrepareCommond(SQLiteCommand cmd, CommandType commandType, QueryParameter[] parameters, string commandtext)
            {
                cmd.CommandType = commandType;
                cmd.CommandText = commandtext;
                cmd.Connection = _connection;
                cmd.Transaction = this._tran;
                if (parameters != null && parameters.Length > 0)
                {
                    for (int i = 0; i < parameters.Length; i++)
                    {
                        cmd.Parameters.AddWithValue(parameters[i].Name, parameters[i].Value);
                    }
                }
            }
        }


    
  • 相关阅读:
    团队项目
    四则运算
    关于软件工程的问题
    自我介绍
    各种排序
    2017年03月14日 新模块投产日记
    第一发和技术无关的博客
    分享一款好用的PHP下ID混淆插件
    批量抓取cisco设备配置脚本编写(expect/sed/awk/shell)
    ntp/heartbeat/postfix/dns故障处理记录
  • 原文地址:https://www.cnblogs.com/kevinGao/p/15764536.html
Copyright © 2020-2023  润新知