1
Hello,
When executing list in . csv and inserting them in PROC by C# error is given on one of the lines, but I would like that after the error the execution continues, follows part:
Try {
Reader = cmd.Executereader();
Catch(Exception ex)
{
message;
When you’re here I’d like the code to continue...
}
Even in this way is not yet possible, as I can do?
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,
Good afternoon @rock.ownar. I don’t know if it would be the best option in terms of performance, but if you want the flow inside the foreach to continue you could put the Try catch inside the foreach, because when the error occurs it will not leave the loop. The way you did, every error will perform the catch that is out of the loop and will not continue even. Note The catch at the end of the answer seems not to be indented correctly, this can give a mess...rs.
– Mr. Mister