zoukankan      html  css  js  c++  java
  • C#实现把查询出的Table作为参数更新到数据库

    1.ImportData主方法

    把传入为object数组类型,按照下标取出对应的参数,此处为Table和Username

    public object[] ImportData(object[] Param)
            {
                DataTable dt = (DataTable)Param[0];
                string msg1 = "", msg2 = "", msg3 = "";
                Hashtable ht = new Hashtable();
                username = Param[1].ToString();//操作人工号
                ExecutionResult result = new ExecutionResult();
                result.Message = "";
                dbTools = new InfoLightDBTools(this.ClientInfo, this.GetClientInfo(ClientInfoType.LoginDB).ToString());
                string SN = ""; string ITEM_NO = ""; string FAILURE = ""; string CORRECT = ""; string ISSUE = ""; string STATUS = ""; string ISSUE_TYPE = "";
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //需要进行操作的列
                    SN = dt.Rows[i]["SERIAL_NUMBER"].ToString();
                    ITEM_NO = dt.Rows[i]["ITEM_NO"].ToString();
                    FAILURE = dt.Rows[i]["FAILURE_ANALYSE"].ToString();
                    CORRECT = dt.Rows[i]["CORRECT_ACTION"].ToString();
                    ISSUE = dt.Rows[i]["ISSUE_OWNER"].ToString();
                    STATUS = dt.Rows[i]["STATUS"].ToString();
                    ISSUE_TYPE = dt.Rows[i]["ISSUE_TYPE"].ToString();
                    if (CheckFA(FAILURE))
                    {
                        #region Oprator
                        if (!CheckValue(SN, ITEM_NO))//根据Key进行Check数据是否存在,不存在进行Insert,存在则进行Update
                        {                               
                            result = DoInsert(SN, ITEM_NO, FAILURE, CORRECT, ISSUE, ISSUE_TYPE, STATUS);//Insert操作
                            if (!result.Status)
                            {
                                msg1 += "在第" + (i + 1).ToString() + "行,SERIAL_NUMBER: " + SN + " ITEM_NO:" + ITEM_NO + " Insert数据时失败:" + result.Message;
                                result.Status = false;
                                continue;
                            }
                        }
                        else
                        {
                            result = DoUpdate(SN, ITEM_NO, FAILURE, CORRECT, ISSUE, ISSUE_TYPE, STATUS);//Update 操作
                            if (!result.Status)
                            {
                                msg2 = "在第" + (i + 1).ToString() + "行,SERIAL_NUMBER: " + SN + " ITEM_NO:" + ITEM_NO + " Update数据时失败:" + result.Message;
                                result.Status = false;
                                continue;
                            }
                        }
                        #endregion
                    }
                    else
                    {
                        msg3 += "Excel中第" + (i + 1).ToString() + "行的FAILURE_ANALYSE值为空!";
                        result.Status = false;
                        continue;
                    }          
                }
                result.Message = "";
                if (!string.IsNullOrEmpty(msg1))
                {
                    result.Message += " Insert Error: " + msg1;
                }
                if (!string.IsNullOrEmpty(msg2))
                {
                    result.Message += " Update Error: " + msg2;
                }
                if (!string.IsNullOrEmpty(msg3))
                {
                    result.Message += msg3;
                }
    
                if (result.Message == "")
                {
                    return new object[] { 0, "OK", result.Message };
                }
                else
                {
                    return new object[] { 0, "NG", result.Message };
                }  
            }

    2.CheckValue

    根据主键进行Check数据库中是否存在已有的数据

    public bool CheckValue(string sn, string item_no)
            {
                dbTools = new InfoLightDBTools(this.ClientInfo, this.GetClientInfo(ClientInfoType.LoginDB).ToString());
                DataTable dt = new DataTable();
                DataSet ds = new DataSet();
                Hashtable ht = new Hashtable();
                ExecutionResult result = new ExecutionResult();
    
                string sql = @" SELECT *
      FROM SFISM4.R_FAILURE_ANALYSIS_T T
     where T.Serial_Number = :sn
       and T.Item_No = :item_no
    ";
    
                ht.Clear();
                ht.Add("sn", sn);
                ht.Add("item_no", item_no);
    
                result = this.dbTools.ExecuteUpdateHt(sql, ht);
                ds = (DataSet)this.dbTools.ExecuteQueryDSHt(sql, ht).Anything;
    
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

    3.DoInsert

    根主键Check的内容为空则进行Insert

     public ExecutionResult DoInsert(string sn, string item_no, string failure, string correct, string issue, string issue_type, string status)
            {
                Hashtable ht = new Hashtable();
    
                ExecutionResult result = new ExecutionResult();
                this.dbTools = new InfoLightDBTools(this.ClientInfo, this.GetClientInfo(ClientInfoType.LoginDB).ToString());
                string sql = @" insert into SFISM4.R_FAILURE_ANALYSIS_T
      (SERIAL_NUMBER,
       ITEM_NO,
       FAILURE_ANALYSE,
       CORRECT_ACTION,
       ISSUE_OWNER,
       ISSUE_TYPE,
       STATUS,
       CREATE_USER,
       CREATE_TIME)
    values
      (:sn,
       :item_no,
       :failure,
       :correct,
       :issue,
       :issue_type,
       :status,
       :username,
       sysdate)
     ";
                ht.Clear();
                ht.Add("SN", sn);
                ht.Add("item_no", item_no);
                ht.Add("failure", failure);
                ht.Add("correct", correct);
                ht.Add("issue", issue);
                ht.Add("issue_type", issue_type);
                ht.Add("status", status);
                ht.Add("username", username);
    
                result = this.dbTools.ExecuteUpdateHt(sql, ht);
                return result;
            }

    4.DoUpdate

    根据主键Check的内容非空则进行Update

    public ExecutionResult DoUpdate(string sn, string item_no, string failure, string correct, string issue, string issue_type, string status)
            {
                Hashtable ht = new Hashtable();
                ExecutionResult result = new ExecutionResult();
                this.dbTools = new InfoLightDBTools(this.ClientInfo, this.GetClientInfo(ClientInfoType.LoginDB).ToString());
                string sql = @" update SFISM4.R_FAILURE_ANALYSIS_T T
       set T.Failure_Analyse = :failure,
           T.Correct_Action  = :correct,
           T.Issue_Owner     = :issue,
           T.ISSUE_TYPE      = :issue_type,
           T.Status          = :status,
           T.Update_User     = :username,
           T.Update_Time     = sysdate,
           T.STATE_FLAG      = 0
     where T.Serial_Number = :sn
       and T.ITEM_NO = :item_no
     ";
    
                ht.Clear();
                ht.Add("SN", sn);
                ht.Add("item_no", item_no);
                ht.Add("failure", failure);
                ht.Add("correct", correct);
                ht.Add("issue", issue);
                ht.Add("issue_type", issue_type);
                ht.Add("status", status);
                ht.Add("username", username);
    
                result = this.dbTools.ExecuteUpdateHt(sql, ht);
                return result;
    
            }
        }
  • 相关阅读:
    cas 重复登录问题解决了。但是两个页签都是已登录状态,一个页签退出,另外一个页签正常访问应用程序。会出现下面报错信息。待解决
    flask 结合cas 出现的问题
    实验场景:两个页面登录状态下,一个logout.然后重新登录,一个页面刷新
    flask 生成excel并下载
    为什么不能在shell脚本中执行source /etc/profile或者source ~/.bashrc问题?
    centos7实现ssh免秘钥分发
    Drbd+Heatbeat实现NFS共享文件存储高可用
    docker监控方案实践(cadvisor+influxdb+grafana)
    centos7.5部署ELk
    keepalived+haproxy实现高可用负载均衡
  • 原文地址:https://www.cnblogs.com/wml-it/p/12201199.html
Copyright © 2011-2022 走看看