数据库的逻辑层类,用一个基类进行实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;
using UtilityConsole;

namespace DBAccess
{
    public enum DBOperation { ADD, UPDATE };
    public class BaseOperation
    {
         //连接字符串
        private string _connStr = string.Empty;
        public string ErrorInfo = string.Empty;

        protected string strTmp;
        protected StringBuilder sbMutilProcessSqlString;
        protected StringBuilder sb;
        protected int i;
        protected ReadDataFromDataReader mMyReadDataFromDataReader;
        protected DataTable dtTable;
        protected List<DBOperation> ActionList;

        public string ConnStr
        {
            get { return _connStr; }
            set { _connStr = value; }
        }

        protected BaseOperation()
        {
            _connStr = ConfigurationManager.AppSettings["connection"];
            DBHelper.Instance.ConnectionStr = _connStr;
            sb = new StringBuilder();
            sbMutilProcessSqlString = new StringBuilder();
            mMyReadDataFromDataReader = new ReadDataFromDataReader(BaseReadDataFromDataReader);
            ActionList = new List<DBOperation>();
        }

        /// <summary>
        /// 开始多任务操作
        /// </summary>
        public void StartMultiOperation()
        {
            ActionList.Clear();
            sbMutilProcessSqlString.Remove(0, sbMutilProcessSqlString.Length);
        }

        /// <summary>
        /// 添加动作
        /// </summary>
        /// <param name="dbo">具体动作</param>
        protected void AddAction(List<string> paramValues, string tableName, string[] _nameString, string[] _nameStringType, DBOperation dbo)
        {
            if (dbo == DBOperation.ADD)
            {
                strTmp = BaseCreateInsertSqlString(paramValues, tableName, _nameString, _nameStringType);
                if (strTmp != null && strTmp.Trim().Length > 0)
                {
                    sbMutilProcessSqlString.Append(strTmp);
                    sbMutilProcessSqlString.Append("\r\n");
                }                
            }
            else if (dbo == DBOperation.UPDATE)
            {
                strTmp = BaseCreateUpdateSqlString(paramValues, tableName, _nameString, _nameStringType);
                if (strTmp != null && strTmp.Trim().Length > 0)
                {
                    sbMutilProcessSqlString.Append(strTmp);
                    sbMutilProcessSqlString.Append("\r\n");
                }              
            }
        }

        /// <summary>
        /// 执行多步操作
        /// </summary>
        /// <returns>影响的行数,失败返回-1</returns>
        public int ExecuteMultiOperation()
        {
            strTmp = sbMutilProcessSqlString.ToString().Trim();
            if (strTmp != null && strTmp.Length > 0)
            {
                return DBHelper.Instance.ExecuteSqlStatementTrans(sbMutilProcessSqlString.ToString());
            }
            else
            {
                return -1;
            }
        }

        /// <summary>
        /// SqlCommand方法执行更新、删除
        /// </summary>
        /// <param name="sqlStr">sqlStr执行语句</param>
        /// <returns></returns>
        protected int SqlExecutive(string sqlStr)
        {
            return DBHelper.Instance.ExecuteSqlStatement(sqlStr);
        }

        /// <summary>
        /// 是否存在
        /// </summary>
        /// <param name="strSql">sql语句</param>
        /// <returns>判断是否存在</returns>
        protected bool BaseExists(string strSql)
        {
            return DBHelper.Instance.Exists(strSql);
        }

        /// <summary>
        /// 生成插入语句
        /// </summary>
        /// <param name="paramValues">参数值</param>
        /// <param name="tableName">数据表名</param>
        /// <param name="_nameString">字段名</param>
        /// <param name="_nameStringType">字段类型</param>
        /// <returns>生成的插入语句</returns>
        protected string BaseCreateInsertSqlString(List<string> paramValues, string tableName, string[] _nameString, string[] _nameStringType)
        {
            sb.Remove(0, sb.Length);

            if (paramValues.Count != _nameString.Length)
            {
                return null;
            }

            sb.Append(string.Format("INSERT INTO [{0}] ", tableName));

            //ok
            for (i = 1; i < _nameString.Length; i++)
            {
                if (i == 1)
                {
                    sb.Append(string.Format("({0}", _nameString[i]));
                }
                else
                {
                    sb.Append(string.Format(",{0}", _nameString[i]));
                }
            }
            sb.Append(") VALUES (");


            //not ok
            for (i = 1; i < _nameString.Length; i++)
            {
                if (_nameStringType[i] == "int" || _nameStringType[i] == "float")
                {
                    if (paramValues[i].Trim() == "")
                    {
                        paramValues[i] = "0";
                    }
                    sb.Append(string.Format("{0},", paramValues[i]));
                }
                else
                {
                    sb.Append(string.Format("'{0}',", paramValues[i]));
                }
            }

            if (i != 1)
            {
                sb.Remove(sb.Length - 1, 1);
            }

            sb.Append(")");

            return sb.ToString();
        }

        //基本的插入
        protected int BaseInsertItem(List<string> paramValues, string tableName, string[] _nameString, string[] _nameStringType)
        {
            return SqlExecutive(BaseCreateInsertSqlString(paramValues, tableName, _nameString, _nameStringType));
        }

        /// <summary>
        /// 删除操作
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="strWhere">where子句</param>
        /// <returns>返回的结果</returns>
        protected int BaseDelete(string tableName,string strWhere)
        {
            sb.Remove(0, sb.Length);
            sb.Append(string.Format("delete from {0}", tableName));
            if (strWhere != null && strWhere.Length > 0)
            {
                sb.Append(string.Format(" where {0}", strWhere));
            }
            return SqlExecutive(sb.ToString());
        }

        /// <summary>
        /// 添加更新语句
        /// </summary>
        /// <param name="paramValues">值</param>
        /// <param name="tableName">数据库表</param>
        /// <param name="_nameString">字段</param>
        /// <param name="_nameStringType">字段类型</param>
        /// <returns></returns>
        protected string BaseCreateUpdateSqlString(List<string> paramValues, string tableName, string[] _nameString, string[] _nameStringType)
        {
            sb.Remove(0, sb.Length);
            if (paramValues.Count != _nameString.Length)
            {
                return null;
            }

            sb.Append(string.Format("update [{0}] set ", tableName));

            for (i = 1; i <= _nameString.Length - 1; i++)
            {
                if (_nameStringType[i] == "int" || _nameStringType[i] == "float")
                {
                    if (paramValues[i].Trim() == "")
                    {
                        paramValues[i] = "0";
                    }
                    sb.Append(string.Format("{0} = {1},", _nameString[i], paramValues[i]));
                }
                else
                {
                    sb.Append(string.Format("{0} = '{1}',", _nameString[i], paramValues[i]));
                }
            }

            if (i != 1)
            {
                sb.Remove(sb.Length - 1, 1);
            }

            sb.Append(string.Format(" where {0} = {1}", _nameString[0], paramValues[0]));

            return sb.ToString();
        }

        /// <summary>
        /// 更新函数
        /// </summary>
        protected int BaseUpdateItem(List<string> paramValues, string tableName, string[] _nameString, string[] _nameStringType)
        {
            return this.SqlExecutive(BaseCreateUpdateSqlString(paramValues, tableName, _nameString, _nameStringType));
        }

        /// <summary>
        /// 创造内存表结构
        /// </summary>
        /// <param name="colNames">类名</param>
        /// <returns>带结构的表</returns>
        protected DataTable GetDataTableSchema(string[] colNames)
        {
            DataTable dtTmp;
            DataColumn dcColumn;

            dtTmp = null;
            if (colNames != null && colNames.Length > 0)
            {
                dtTmp = new DataTable();
                for (i = 0; i < colNames.Length; ++i)
                {
                    dcColumn = new DataColumn(colNames[i]);
                    dtTmp.Columns.Add(dcColumn);
                }
            }

            return dtTmp;
        }

        /// <summary>
        /// 读取数据
        /// </summary>
        /// <param name="reader">数据集</param>
        protected void BaseReadDataFromDataReader(SqlDataReader reader)
        {
            if (reader.HasRows)
            {
                if (dtTable != null && dtTable.Columns.Count > 0)
                {
                    DataRow NewRow;
                    string strColName;
                    int ColCount;

                    while (reader.Read())
                    {
                        NewRow = dtTable.NewRow();
                        ColCount = dtTable.Columns.Count;

                        for (i = 0; i < dtTable.Columns.Count; ++i)
                        {
                            strColName = dtTable.Columns[i].ColumnName;
                            NewRow[strColName] = reader[strColName];
                        }
                        dtTable.Rows.Add(NewRow);
                    }
                }
            }
        }

        /// <summary>
        /// 查询语句
        /// </summary>
        /// <param name="tableName">表的名字</param>
        /// <param name="_nameString">列名</param>
        /// <param name="strWhere">子查询</param>
        /// <returns>返回的数据列</returns>
        protected DataTable BaseSelectItem(string tableName, string[] _nameString, string strWhere)
        {
            sb.Remove(0, sb.Length);
            sb.Append(string.Format("select * from [{0}]", tableName));
            if (strWhere != null && strWhere.Length > 0)
            {
                sb.Append(string.Format(" where {0}", strWhere));
            }
            dtTable = GetDataTableSchema(_nameString); //创造带结构的表
            if (DBHelper.Instance.ExecuteSqlStatement(sb.ToString(), mMyReadDataFromDataReader))
            {
                return dtTable;
            }

            return null;
        }

        protected int BaseGetMaxId(string strSql)
        {
            return int.Parse(DBHelper.Instance.SelectDB(strSql).Rows[0][0].ToString());
        }
    }
}
该类主要将底层的类进行封装,实现了增删改和批量的事务操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值