0

我正在C#使用 Visual StudioMySql。我的代码中有一个按钮,它有自己的方法。当它结束时,它会从Class. 我已经编辑timeout了命令和连接。此方法将日期插入到表中。我第二次在同一张表中插入日期,它读取最后一个 ID 并"id"增加 +1。日期第一次超过 20.000,第二次达到 40.000++。那是问题吗?

            public void PendenciaAssociado()
                {

            #region LeituraDosDados
            MySqlConnection Con = new MySqlConnection(ConfigurationManager.ConnectionStrings["strConexaoDestino"].ConnectionString);
            MySqlCommand Cmd = new MySqlCommand();
            Cmd.CommandTimeout = 1000;
            Cmd.CommandType = CommandType.Text;
            Cmd.Connection = Con;           
            string sql = "SELECT matricula,dt_nascimento,cpf,rg,celular,mail,profissao,dt_insercao,usr_insercao from Associados";
            Cmd.CommandText = sql;           
            Con.Open();
            MySqlDataReader dr = Cmd.ExecuteReader();            
            DataTable dt = new DataTable();
            dt.Load(dr);
            Con.Close();
            Con.Dispose();

            #endregion

            #region Variaveis
            int matricula, profissao;
            DateTime dt_nascimento, dt_insercao;
            string cpf, rg, celular, mail, usr_insercao, pendencia;
            #endregion


            foreach (DataRow row in dt.Rows)
            {

                matricula = Convert.ToInt32(row["matricula"]);
                dt_nascimento = Convert.ToDateTime(row["dt_nascimento"]);
                cpf = row["cpf"].ToString();
                rg = row["rg"].ToString();
                celular = row["celular"].ToString();
                mail = row["mail"].ToString();
                profissao = Convert.ToInt32(row["profissao"]);
                dt_insercao = Convert.ToDateTime(row["dt_insercao"]);
                usr_insercao = row["usr_insercao"].ToString();

                if (profissao == 0)
                {
                    pendencia = "Favor Verificar a Profissao do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
                if (dt_nascimento.ToString() == "01/01/1980 00:00:00")
                {
                    pendencia = "Favor Verificar a Data de Nascimento do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
                if (cpf == "00000000000")
                {
                    pendencia = "Favor Verificar o CPF do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
                if (rg == "0000000000")
                {
                    pendencia = "Favor Verificar o RG do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
                if (celular == "")
                {
                    pendencia = "Favor Verificar o Celular do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
                if (mail == "")
                {
                    pendencia = "Favor Verificar o Email do Associado";
                    InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia);
                }
            }
        }

        int contador = 0, aux, aux2;
        public void InserePendencias(int matricula, DateTime data_nasci, string cpf, string rg, string celular, string email, int profissao, DateTime data_insercao, string usuario, string pendencia)
        {

            MySqlConnection con = new MySqlConnection(ConfigurationManager.ConnectionStrings["strConexaoDestino"].ConnectionString);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            string seleciona = "SELECT MAX(codigo) as codigo FROM pendencias";
            cmd.CommandText = seleciona;
            con.Open();
            MySqlDataReader dr = cmd.ExecuteReader();
            con.Close();
            if (contador == 0)
            {
                contador++;
                aux2 = contador;
            }
            else if (contador != 0)
            {
                contador++;
                aux = contador;
            }



            cmd.Connection = con;                
            string query = "INSERT INTO  pendencias (codigo,matricula,pendencia,dt_insercao,usr_insercao) VALUES(" +
                           "@codigo,@matricula,@pendencia,@dt_insercao,@usr_insercao)";
            cmd.CommandText = query;
            cmd.Connection = con;
            cmd.Parameters.Add(new MySqlParameter("@codigo", MySqlDbType.Int32)).Value = contador;
            cmd.Parameters.Add(new MySqlParameter("@matricula", MySqlDbType.Int32)).Value = matricula;
            cmd.Parameters.Add(new MySqlParameter("@pendencia", MySqlDbType.VarChar)).Value = pendencia;
            cmd.Parameters.Add(new MySqlParameter("@dt_insercao", MySqlDbType.DateTime)).Value = data_nasci;
            cmd.Parameters.Add(new MySqlParameter("@usr_insercao", MySqlDbType.VarChar)).Value = usuario;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
4

1 回答 1

0

好的 - 我没有发布作为答案,但我有太多话要发表评论。如果我得到答案,我可以编辑它。所以,这是一个很长的评论!

所以我看到的第一件事是:

       if (profissao == 0) 
        { 
            pendencia = "Favor Verificar a Profissao do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 
        if (dt_nascimento.ToString() == "01/01/1980 00:00:00") 
        { 
            pendencia = "Favor Verificar a Data de Nascimento do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 
        if (cpf == "00000000000") 
        { 
            pendencia = "Favor Verificar o CPF do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 
        if (rg == "0000000000") 
        { 
            pendencia = "Favor Verificar o RG do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 
        if (celular == "") 
        { 
            pendencia = "Favor Verificar o Celular do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 
        if (mail == "") 
        { 
            pendencia = "Favor Verificar o Email do Associado"; 
            InserePendencias(matricula, dt_nascimento, cpf, rg, celular, mail, profissao, dt_insercao, usr_insercao, pendencia); 
        } 

实际情况是,您想将 pendecia 设置为一个值,并调用完全相同的调用 .. 确实可以在那里使用一些代码简化。

每次运行它时,记录数都会增加一倍。所以第一次有 10 条,到最后有 20 条。所以下一次有 20 条,最后有 40 条……这是你真正想要什么?

如果您的前 10 个都需要运行此功能,则您不会通过更新它们来阻止它们第二次包含在内。因此,它不像您只评估添加的 10 行,而是评估所有 20 行,再次生成第二组 10 行 - 就像您第一次做的那样,以及之前添加的 10 中的任何新值。 ..有点像一种无限循环类型的行为,但插入到数据库中而不是仅仅使用值。

于 2012-09-03T12:58:12.050 回答