After error in insertion in database through C # I can not insert rows remaining

1

Hello,

When executing a list in .csv and inserting them in the C # proc, an error is given in one of the lines, but I would like the following to continue after the error:

try {

reader = cmd.ExecuteReader ();

Catch (Exception ex)

{

message;

When you go here, I would like the code to continue ...

}

Even though this is still not possible, how can I do it?

try   {

            string ProcedureInsertPROC = "PROC";
            string ProcedureInsertProdutoPROC = "PROC";
            string ProcedureInsertPracaPROC = "PROC";
            SqlDataReader reader;
            List<string> idsRollback = new List<string>();
            idsRollback.Add("PROC;DEPA;PROD;PRACA");
            string ultimoPROCId = string.Empty;
            string ultimoDepaId = string.Empty;

            using (SqlConnection sqlConn = new SqlConnection(conexao))
            {

                foreach (var PROC in UltimoDictImportadoChange)
                {
                    bool linhaok = true;

                    if (string.IsNullOrEmpty(PROC.valorqualquer) ||
                        string.IsNullOrEmpty(PROC.valorqualquer) ||
                        string.IsNullOrEmpty(PROC.valorqualquer) ||
                        PROC.Peso < 0 ||
                        PROC.valorqualquer < 0 ||
                        PROC.valorqualquer < 0)
                    {
                        linhaok = false;
                    }

                    if (linhaok)
                    {
                        using (SqlCommand cmd = new SqlCommand(ProcedureInsertPROC, sqlConn))
                        {
                            sqlConn.Open();
                            cmd.CommandType = CommandType.StoredProcedure;

                            cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                            cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                            cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                            cmd.Parameters.AddWithValue("@NOME", v);
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.Fabricante, Fabricantes));
                            cmd.Parameters.AddWithValue("@NOME", PROC.Palavra_para_pesquisa);
                            cmd.Parameters.AddWithValue("@NOME", PROC.a;
                            cmd.Parameters.AddWithValue("@NOME", PROC.b);
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.v));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.prod.valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", PROC.valorqualquer);
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.Familia,prod.valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.Tipo, v));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.Controle, v));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.Departamento.Value, valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.valorqualquer, valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.valorqualquer.Value, valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.valorqualquer.Value, valorqualquer));
                            cmd.Parameters.AddWithValue("@NOME", CustomStringConvert.ToParameter(PROC.valorqualquer.Value, valorqualquer));

                            reader = cmd.ExecuteReader();

                            while (reader.Read())
                            {
                                ultimoPROCId = reader["PROC"].ToString();
                                ultimoDepaId = reader["DEPARTAMENTO"].ToString();
                                idsRollback.Add(ultimoPROCId + ";" + ultimoDepaId + ";0;0");
                            }

                            sqlConn.Close();
                        }

                        foreach (var prod in PROC.Produtos)
                        {

                            if (string.IsNullOrEmpty(prod.CodExterno) ||
                                prod.Quantidade < 1 ||
                                prod.PorcentagemDesconto < 0)
                            {
                                literalTabelaImportacao.Text = AlertErrorBootstrap("Houve um erro ao inserir os produtos referentes ao PROC com o código externo " + PROC.valorqualquer + "<br />Valide os dados importados no backoffice para evitar duplicidades.");
                                return;
                            }

                            using (SqlCommand cmd = new SqlCommand(ProcedureInsertProdutoPROC, sqlConn))
                            {
                                sqlConn.Open();
                                cmd.CommandType = CommandType.StoredProcedure;

                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cod_externo = prod.CodExterno;
                                reader = cmd.ExecuteReader();

                                while (reader.Read())
                                {
                                    if (reader["PRODUTO_PROC"].ToString().Count() < 3)
                                    {
                                        literalTabelaImportacao.Text = AlertErrorBootstrap("Houve um erro ao inserir os produtos referentes ao PROC com o código externo " + PROC.valorqualquer + "<br />Valide os dados importados no backoffice para evitar duplicidades.");
                                        return;
                                    }
                                    idsRollback.Add(ultimoPROCId + ";NULL;" + reader["PRODUTO_PROC"].ToString() + ";0");
                                }

                                sqlConn.Close();
                            }

                        }

                        catch(exception ex){

                        }

Hugs,

    
asked by anonymous 31.03.2017 / 16:10

4 answers

0

In the code itself I solved by putting only a new select before executing the procedure, so I consulted if the data existed and could continue the try catch using them anyway the code stops, see that before the post I already used it .

    
31.03.2017 / 20:18
2
foreach row in xpto
{
   try
   {
       // Executas aqui o código, quando continuar 
       // Quando rebentar ou acabar vai ao próximo
   }
   catch(Exception ex)
   {

   }
}
    
31.03.2017 / 16:19
0

To ensure that an instruction is executed, whether or not an exception is thrown / caught in catch , write it in a finally block.

...

try {

    reader = cmd.ExecuteReader();

}
Catch(Exception ex)    
{
    Console.WriteLine(icEx.Message);
}
finally
{
    //Insira aqui o código que você deseja executar, 
    //quer seja ou não lançada uma exceção, exemplo: reader.Close(); 
}

...
    
31.03.2017 / 16:33
0
 foreach (var prod in PROC.Produtos)
                        {

                            if (string.IsNullOrEmpty(prod.CodExterno) ||
                                prod.Quantidade < 1 ||
                                prod.PorcentagemDesconto < 0)
                            {
                                literalTabelaImportacao.Text = AlertErrorBootstrap("Houve um erro ao inserir os produtos referentes ao PROC com o código externo " + PROC.valorqualquer + "<br />Valide os dados importados no backoffice para evitar duplicidades.");
                                return;
                            }

                            using (SqlCommand cmd = new SqlCommand(ProcedureInsertProdutoPROC, sqlConn))
                            {
                                sqlConn.Open();
                                cmd.CommandType = CommandType.StoredProcedure;

                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cmd.Parameters.AddWithValue("@NOME", prod.valorqualquer);
                                cod_externo = prod.CodExterno;
                                reader = cmd.ExecuteReader();

                                while (reader.Read())
                                {
                                    if (reader["PRODUTO_PROC"].ToString().Count() < 3)
                                    {
                                        literalTabelaImportacao.Text = AlertErrorBootstrap("Houve um erro ao inserir os produtos referentes ao PROC com o código externo " + PROC.valorqualquer + "<br />Valide os dados importados no backoffice para evitar duplicidades.");
                                        return;
                                    }
                                    idsRollback.Add(ultimoPROCId + ";NULL;" + reader["PRODUTO_PROC"].ToString() + ";0");
                                }

                                sqlConn.Close();
                            }

                        }

                        catch(exception){
                           continue;
                        }
    
31.03.2017 / 18:10