超时已到期。操作完成前经过了超时时间

时间:2012-09-03 12:39:43

标签: c# mysql

我正在使用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();

1 个答案:

答案 0 :(得分: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的任何新值。 ..有点无限循环类型行为的形式,但插入数据库而不是仅仅使用值。