• “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 打印

    广东11选5殺碼公式: 小工具代码c#数据库表 字段 对比生产和测试 数据库表+ 字...

    [复制链接]
    191|1
    跳转到指定楼层
    楼主
    本帖最后由 jason9031 于 2019-3-15 10:52 编辑

    【小工具代码c#数据库表 字段 对比】生产Prod 和测试Test 数据库表+ 字段(最多15个不同)不同对比

    先把所有表查出来,正向反向遍历看表是否在对方列表中存在,信息都记录在datatable中

    只有在表名相同的前提下才正反向遍历字段是否互相存在,代码写的有点啰嗦,凑合用吧

    1.         private void btnCompare_Click(object sender, EventArgs e)
    2.         {
    3.             int iTableNumCount = 1;
    4.             DataTable dtAllResult = new DataTable();
    5.             dtAllResult.Columns.Add("Number");
    6.             dtAllResult.Columns.Add("TableName");
    7.             dtAllResult.Columns.Add("Result_Prod");
    8.             dtAllResult.Columns.Add("Result_Test");
    9.             dtAllResult.Columns.Add("Field_Prod1");
    10.             dtAllResult.Columns.Add("Field_Prod2");
    11.             dtAllResult.Columns.Add("Field_Prod3");
    12.             dtAllResult.Columns.Add("Field_Prod4");
    13.             dtAllResult.Columns.Add("Field_Prod5");
    14.             dtAllResult.Columns.Add("Field_Prod6");
    15.             dtAllResult.Columns.Add("Field_Prod7");
    16.             dtAllResult.Columns.Add("Field_Prod8");
    17.             dtAllResult.Columns.Add("Field_Prod9");
    18.             dtAllResult.Columns.Add("Field_Prod10");
    19.             dtAllResult.Columns.Add("Field_Prod11");
    20.             dtAllResult.Columns.Add("Field_Prod12");
    21.             dtAllResult.Columns.Add("Field_Prod13");
    22.             dtAllResult.Columns.Add("Field_Prod14");
    23.             dtAllResult.Columns.Add("Field_Prod15");
    24.             dtAllResult.Columns.Add("Field_Test1");
    25.             dtAllResult.Columns.Add("Field_Test2");
    26.             dtAllResult.Columns.Add("Field_Test3");
    27.             dtAllResult.Columns.Add("Field_Test4");
    28.             dtAllResult.Columns.Add("Field_Test5");
    29.             dtAllResult.Columns.Add("Field_Test6");
    30.             dtAllResult.Columns.Add("Field_Test7");
    31.             dtAllResult.Columns.Add("Field_Test8");
    32.             dtAllResult.Columns.Add("Field_Test9");
    33.             dtAllResult.Columns.Add("Field_Test10");
    34.             dtAllResult.Columns.Add("Field_Test11");
    35.             dtAllResult.Columns.Add("Field_Test12");
    36.             dtAllResult.Columns.Add("Field_Test13");
    37.             dtAllResult.Columns.Add("Field_Test14");
    38.             dtAllResult.Columns.Add("Field_Test15");

    39.             bool bIfHaveSameTable = false;
    40.             DataTable dtDifferent = new DataTable();
    41.             string sqlAllTable = " SELECT TABLE_NAME FROM ALL_TABLES  ";
    42.             DataTable dtProdTable = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES, sqlAllTable);
    43.             DataTable dtTestTable = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES_TEST, sqlAllTable);

    44.             string sqlAllTableCount = " SELECT COUNT(*) FROM ALL_TABLES ";
    45.             string strPordCount = Tools.OracleHelper.ExecuteScalarToString(Tools.OracleHelper.DataBaseType.DB_IMES, sqlAllTableCount);
    46.             string strTestCount = Tools.OracleHelper.ExecuteScalarToString(Tools.OracleHelper.DataBaseType.DB_IMES_TEST, sqlAllTableCount);

    47.             string strSqlTableStructHead = " SELECT * FROM    ";
    48.             string strSqlTableStructTail = "    WHERE ROWNUM < 2";

    49.             for (int icount = 0; icount < dtProdTable.Rows.Count; icount++)
    50.             {
    51.                 bIfHaveSameTable = false;
    52.                 for (int icountTest = 0; icountTest < dtTestTable.Rows.Count; icountTest++)
    53.                 {
    54.                     if (dtProdTable.Rows[icount][0].ToString().Trim().Equals(dtTestTable.Rows[icountTest][0].ToString().Trim()))
    55.                     {
    56.                         //有相同表名
    57.                         bIfHaveSameTable = true;
    58.                         break;
    59.                     }
    60.                 }
    61.                 string nowProdTable = dtProdTable.Rows[icount][0].ToString().Trim();
    62.                 if (bIfHaveSameTable)//有相同表 再比较表结构
    63.                 {
    64.                     DataTable dtProdTableField = new DataTable();
    65.                     DataTable dtTestTableField = new DataTable();
    66.                     try
    67.                     {
    68.                          dtProdTableField = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES, strSqlTableStructHead + nowProdTable + strSqlTableStructTail);
    69.                          dtTestTableField = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES_TEST, strSqlTableStructHead + nowProdTable + strSqlTableStructTail);
    70.                     }
    71.                     catch (Exception ex)
    72.                     {
    73.                         string str = ex.ToString();
    74.                         DataRow drTempErr = dtAllResult.NewRow();
    75.                         drTempErr["Number"] = (iTableNumCount++).ToString();
    76.                         drTempErr["TableName"] = (nowProdTable).ToString();
    77.                         drTempErr["Result_Prod"] = ("Error").ToString();
    78.                         drTempErr["Result_Test"] = ("Error").ToString();
    79.                         dtAllResult.Rows.Add(drTempErr);
    80.                         continue;
    81.                     }
    82.                     bool bFiledSame = false;

    83.                     int iProdMoreThanTest = 1;


    84.                     DataRow drTemp = dtAllResult.NewRow();
    85.                     drTemp["Number"] = (iTableNumCount++).ToString();
    86.                     drTemp["TableName"] = (nowProdTable).ToString();
    87.                     drTemp["Result_Prod"] = ("Have").ToString();
    88.                     drTemp["Result_Test"] = ("Have").ToString();
    89.                     //drTemp["Field_Prod1"] = (iTableNumCount++).ToString();
    90.                     //drTemp["Field_Test1"] = (iTableNumCount++).ToString();

    91.                     foreach (DataColumn dcProd in dtProdTableField.Columns)
    92.                     {
    93.                         bFiledSame = false;
    94.                         foreach (DataColumn dcTest in dtTestTableField.Columns)
    95.                         {
    96.                             if (dcTest.ColumnName.ToString().Trim().Equals(dcProd.ColumnName.ToString().Trim()))
    97.                             {
    98.                                 bFiledSame = true;
    99.                                 break;
    100.                             }
    101.                         }
    102.                         if (bFiledSame)
    103.                         {
    104.                         }
    105.                         else
    106.                         {
    107.                             bFiledSame = false;
    108.                             drTemp["Field_Prod"+ iProdMoreThanTest++] = (dcProd.ColumnName).ToString();
    109.                         }
    110.                     }
    111.                     iProdMoreThanTest = 1;

    112.                     int iTestMoreThanProd = 1;
    113.                     foreach (DataColumn dcTest in dtTestTableField.Columns)
    114.                     {
    115.                         bFiledSame = false;
    116.                         foreach (DataColumn dcProd in dtProdTableField.Columns)
    117.                         {
    118.                             if (dcTest.ColumnName.ToString().Trim().Equals(dcProd.ColumnName.ToString().Trim()))
    119.                             {
    120.                                 bFiledSame = true;
    121.                                 break;
    122.                             }
    123.                         }
    124.                         if (bFiledSame)
    125.                         {
    126.                         }
    127.                         else
    128.                         {
    129.                             bFiledSame = false;
    130.                             drTemp["Field_Test" + iTestMoreThanProd++] = (dcTest.ColumnName).ToString();
    131.                         }
    132.                     }
    133.                     iTestMoreThanProd = 1;

    134.                     dtAllResult.Rows.Add(drTemp);

    135.                 }
    136.                 else
    137.                 {
    138.                     DataRow drTemp = dtAllResult.NewRow();
    139.                     drTemp["Number"] = (iTableNumCount++).ToString();
    140.                     drTemp["TableName"] = (nowProdTable).ToString();
    141.                     drTemp["Result_Prod"] = ("Have").ToString();
    142.                     drTemp["Result_Test"] = ("No").ToString();
    143.                     dtAllResult.Rows.Add(drTemp);
    144.                 }
    145.                 bIfHaveSameTable = false;
    146.             }
    147.             bIfHaveSameTable = false;
    148.             for (int icount = 0; icount < dtTestTable.Rows.Count; icount++)
    149.             {
    150.                 bIfHaveSameTable = false;
    151.                 for (int icountCheckFromProdToTest = 0; icountCheckFromProdToTest < dtAllResult.Rows.Count; icountCheckFromProdToTest++)
    152.                 {
    153.                     if (dtTestTable.Rows[icount][0].ToString().Trim().Equals(dtAllResult.Rows[icountCheckFromProdToTest]["TableName"].ToString().Trim()))
    154.                     {
    155.                         //有相同表名
    156.                         bIfHaveSameTable = true;
    157.                         break;
    158.                     }
    159.                 }
    160.                 string strTestTableName = dtTestTable.Rows[icount][0].ToString().Trim();
    161.                 if (bIfHaveSameTable)//有相同表 再比较表结构
    162.                 {
    163.                     //DataTable dtProdTableField = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES, strSqlTableStructHead + strTestTableName + strSqlTableStructTail);
    164.                     //DataTable dtTestTableField = Tools.OracleHelper.ExecuteDataTable(Tools.OracleHelper.DataBaseType.DB_IMES_TEST, strSqlTableStructHead + strTestTableName + strSqlTableStructTail);
    165.                     //DataRow drTemp = dtAllResult.NewRow();
    166.                     //drTemp["Number"] = (iTableNumCount++).ToString();
    167.                     //drTemp["TableName"] = (strTestTableName).ToString();
    168.                     //drTemp["Result_Prod"] = ("Have").ToString();
    169.                     //drTemp["Result_Test"] = ("Have").ToString();

    170.                     //dtAllResult.Rows.Add(drTemp);

    171.                 }
    172.                 else
    173.                 {
    174.                     DataRow drTemp = dtAllResult.NewRow();
    175.                     drTemp["Number"] = (iTableNumCount++).ToString();
    176.                     drTemp["TableName"] = (strTestTableName).ToString();
    177.                     drTemp["Result_Prod"] = ("No").ToString();
    178.                     drTemp["Result_Test"] = ("Have").ToString();
    179.                     dtAllResult.Rows.Add(drTemp);
    180.                 }
    181.                 bIfHaveSameTable = false;
    182.             }
    183.             gctlData.DataSource = dtAllResult;
    184.             Export.ExportGridToFile(gvData, "TableDiff");
    185.         }
    复制代码


    沙发
    | 2019-3-15 10:54 | 只看该作者
    好资料?。。。。?!
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    关闭

    热门推荐上一条 /4 下一条

    快速回复 广东快乐十分走势图 返回列表
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 金山彩票中奖怎么领奖 北京赛车冠亚军技巧 篮彩推荐新浪 河南快赢481开奖视频 pk10牛牛害人 七星彩论坛- 808彩票网 北京体彩赛车开奖结果 p3试机号金码关注码 中国足彩网合法吗 优乐娱乐时时彩平台 11选5任选3必中奖规律 爱彩乐十一选五 时时彩开奖结果 重庆百变王牌近100期 上海时时彩查开奖结果查询结果 网易彩票客户端可以买高频彩吗