通过逻辑类和数据库表比对 - 校验数据表

2017-06-09 15:53:24  访问(1626) 赞(0) 踩(0)

  • using eKing.SzdfPage.Classes.CheckDBs;
    using SlowX.Core.Business;
    using SlowX.Core.Classes;
    using SlowX.Core.TableAttribute;
    using SlowX.DAL.Helpers;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Text;
    
    namespace eKing.SzdfPage.Helpers
    {
        /// <summary>
        /// 
        /// </summary>
        public partial class eKingSzdfPageHelper
        {
    
            /// <summary>
            /// 通过逻辑类和数据库表比对 - 校验数据表
            /// </summary>
            /// <param name="strTableName"></param>
            /// <returns></returns>
            public string CheckDBTableToHTML
                (
                    string strTableName, 
                    DBHelper xdbHelper
                )
            {
                List<DbTableCheckResult> theList
                    = 
                    CheckDBTable(strTableName, xdbHelper);
    
                StringBuilder theResult = new StringBuilder();
                theResult.AppendLine("<table border=\"1\">");
                theResult.AppendLine("<tbody>");
                theResult.AppendLine("<tr><td>表名</td><td>注释</td><td>多出来的字段</td><td>缺失字段</td><td>异常</td></tr>");
    
                foreach (DbTableCheckResult item in theList)
                {
                    if (item.IsOK)
                        continue;
    
                    theResult.AppendLine(item.ToTrHtml());
                }
    
                theResult.AppendLine("</tbody>");
                theResult.AppendLine("</table>");
    
                return theResult.ToString();
            }
    
            /// <summary>
            /// 通过逻辑类和数据库表比对 - 校验数据表
            /// </summary>
            /// <param name="strTableName"></param>
            /// <returns></returns>
            public List<DbTableCheckResult> CheckDBTable
                (
                    string strTableName, 
                    DBHelper xdbHelper
                )
            {
                List<DbTableCheckResult> theResult 
                    = 
                    new List<DbTableCheckResult>();
    
                bool bIsCreate = true;
    
                if (xdbHelper == null)
                {
                    xdbHelper
                        =
                        SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
                }
                else
                {
                    // 没有打开链接 //
                    bIsCreate = xdbHelper.IsNotOpen();
                }
    
                try
                {
                    if (bIsCreate)
                        xdbHelper.OpenDBHelper();
    
                    bool isAll = true;
    
                    if (strTableName != null)
                    {
                        strTableName = strTableName.Trim();
    
                        if (strTableName.Length != 0)
                        {
                            strTableName = strTableName.ToUpper();
                            isAll = false;
                        }
    
                    }
    
                    List<Type> typeList 
                        = 
                        BaseBusinessTypeList();
    
    
                    DbTableCheckResult cR = null;
    
                    if (isAll)
                    {
                        foreach (Type tB in typeList)
                        {
                            cR = CheckDBTable8BaseBusinessType(tB, xdbHelper);
    
                            if (cR == null)
                                continue;
    
                            theResult.Add(cR);
                        }
                    }
                    else
                    {
    
                        foreach (Type tB in typeList)
                        {
                            if (!tB.Name.ToUpper().Contains(strTableName))
                                continue;
    
                            cR = CheckDBTable8BaseBusinessType(tB, xdbHelper);
    
                            if (cR == null)
                                continue;
    
                            theResult.Add(cR);
                        }
                    }
    
                    if (bIsCreate)
                        xdbHelper.EndDBHelper();
    
                }
                catch (Exception err)
                {
                    if (bIsCreate)
                        xdbHelper.TranDBHelper();
    
                    throw err;
                }
                finally
                {
                    if (bIsCreate)
                        xdbHelper.FinallyDBHelper();
                }
    
                return theResult;
    
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="tB"></param>
            /// <returns></returns>
            protected DbTableCheckResult CheckDBTable8BaseBusinessType
                (Type tB, DBHelper xdbHelper)
            {
                if (tB == null)
                    return null;
    
                DbTableCheckResult theResult = new DbTableCheckResult();
                theResult.TableName = tB.Name;
                theResult.TableComment = "";
    
    
                try
                {
                    BaseBusiness bll = BaseBusinessGetByType(tB);
    
                    BaseTableAttribute BTA = bll.BaseTableAttributeGet();
    
                    theResult.TableName = BTA.TableName;
                    theResult.TableComment = BTA.TableComment;
    
                    string sql = "select * from " + BTA.TableName + " where 1=2";
                    DataSet ds = xdbHelper.ExecuteDataSet(sql);
                     
                    theResult = DbTableCheckResultByDataSet(BTA, ds);
    
                }
                catch (Exception err)
                {
                    theResult.ErrMsg = err.Message;
                }
    
    
                return theResult;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="tB"></param>
            /// <returns></returns>
            protected DbTableCheckResult DbTableCheckResultByDataSet
                (
                    BaseTableAttribute BTA,
                    DataSet ds
                )
    
            {
                if (ds == null)
                    return null;
    
                DataTable dt = ds.Tables[0];
    
                DbTableCheckResult theResult = new DbTableCheckResult();
    
                List<DataColumnAttributeInfo> dcList 
                    =
                    BTA.listDataColumnAttributeInfoValue;
    
                bool isOK = true;
                bool isNotFind = true;
                bool isFirst = true;
                foreach(DataColumn dc in dt.Columns)
                {
                    isNotFind = true;
                    foreach (DataColumnAttributeInfo dcInfo in dcList)
                    {
                        if(dc.ColumnName.Trim().ToLower() == dcInfo.Name.Trim().ToLower())
                        {
                            isNotFind = false;
                            break;
                        }
                    }
    
                    if(isNotFind)
                    {
                        isOK = false;
                        if (isFirst)
                            isFirst = false;
                        else
                            theResult.MoreDataColumn += "|";
    
                        theResult.MoreDataColumn += dc.ColumnName;
                    }
                }
    
                isFirst = true;
    
                foreach (DataColumnAttributeInfo dcInfo in dcList)
                {
                    isNotFind = true;
    
                    foreach (DataColumn dc in dt.Columns)
                    {
                        if (dc.ColumnName.Trim().ToLower() == dcInfo.Name.Trim().ToLower())
                        {
                            isNotFind = false;
                            break;
                        }
                    }
    
                    if (isNotFind)
                    {
                        isOK = false;
                        if (isFirst)
                            isFirst = false;
                        else
                            theResult.MissDataColumn += "|";
    
                        theResult.MissDataColumn += dcInfo.Name + "|";
                    }
                }
    
                theResult.IsOK = isOK;
                theResult.TableComment = BTA.TableComment;
                theResult.TableName = BTA.TableName;
    
                return theResult;
            }
        }
    }
    
    
  • using System;
    
    namespace eKing.SzdfPage.Classes.CheckDBs
    {
        /// <summary>
        /// 数据库表格校验结果
        /// </summary>
        [Serializable]
        public class DbTableCheckResult
        {
            /// <summary>
            /// 数据库表格校验结果
            /// </summary>
            public DbTableCheckResult()
            {
    
            }
    
    
            #region IsOK ~ 是否正确
    
            /// <summary>
            /// IsOK ~ 是否正确
            /// </summary>
            protected bool m_IsOK = false;
    
            /// <summary>
            /// IsOK ~ 是否正确
            /// </summary>
            public bool IsOK
            {
                get
                {
                    return m_IsOK;
                }
                set
                {
                    m_IsOK = value;
                }
            }
    
            #endregion IsOK ~ 是否正确
    
    
    
            #region TableName ~ 数据表
    
            /// <summary>
            /// TableName ~ 数据表
            /// </summary>
            protected string m_TableName = null;
    
            /// <summary>
            /// TableName ~ 数据表
            /// </summary>
            public string TableName
            {
                get
                {
                    return m_TableName;
                }
                set
                {
                    m_TableName = value;
                }
            }
    
            #endregion TableName ~ 数据表
    
    
            #region TableComment ~ 表注释
    
            /// <summary>
            /// TableComment ~ 表注释
            /// </summary>
            protected string m_TableComment = null;
    
            /// <summary>
            /// TableComment ~ 表注释
            /// </summary>
            public string TableComment
            {
                get
                {
                    return m_TableComment;
                }
                set
                {
                    m_TableComment = value;
                }
            }
    
            #endregion TableComment ~ 表注释
    
    
    
            #region MoreDataColumn ~ 多出来的字段
    
            /// <summary>
            /// MoreDataColumn ~ 多出来的字段
            /// </summary>
            protected string m_MoreDataColumn = null;
    
            /// <summary>
            /// MoreDataColumn ~ 多出来的字段
            /// </summary>
            public string MoreDataColumn
            {
                get
                {
                    return m_MoreDataColumn;
                }
                set
                {
                    m_MoreDataColumn = value;
                }
            }
    
            #endregion MoreDataColumn ~ 多出来的字段
    
    
            #region MissDataColumn ~ 缺失的字段
    
            /// <summary>
            /// MissDataColumn ~ 缺失的字段
            /// </summary>
            protected string m_MissDataColumn = null;
    
            /// <summary>
            /// MissDataColumn ~ 缺失的字段
            /// </summary>
            public string MissDataColumn
            {
                get
                {
                    return m_MissDataColumn;
                }
                set
                {
                    m_MissDataColumn = value;
                }
            }
    
            #endregion MissDataColumn ~ 缺失的字段
    
    
            #region NoEqualDataColumn ~ 不对等的字段
    
            /// <summary>
            /// NoEqualDataColumn ~ 不对等的字段
            /// </summary>
            protected string m_NoEqualDataColumn = null;
    
            /// <summary>
            /// NoEqualDataColumn ~ 不对等的字段
            /// </summary>
            public string NoEqualDataColumn
            {
                get
                {
                    return m_NoEqualDataColumn;
                }
                set
                {
                    m_NoEqualDataColumn = value;
                }
            }
    
            #endregion NoEqualDataColumn ~ 不对等的字段
    
    
    
            #region ErrMsg ~ 错误消息
    
            /// <summary>
            /// ErrMsg ~ 错误消息
            /// </summary>
            protected string m_ErrMsg = null;
    
            /// <summary>
            /// ErrMsg ~ 错误消息
            /// </summary>
            public string ErrMsg
            {
                get
                {
                    return m_ErrMsg;
                }
                set
                {
                    m_ErrMsg = value;
                }
            }
    
            #endregion ErrMsg ~ 错误消息
    
            /// <summary>
            /// HTML输出
            /// </summary>
            /// <returns></returns>
            public string ToTrHtml()
            {
                return "<tr><td>" + TableName + "</td><td>" + TableComment + "</td><td>" + MoreDataColumn + "</td><td>" + MissDataColumn + "</td><td>" + ErrMsg + "</td></tr>"; 
            }
        }
    }
    
    

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)