0
Good night! I’m having trouble updating two tables at once in C#.
Obs. in this way it updates the CONTACT table, if I invert the UPDATE sequence it updates the CLIENT table, but never the two together. Follows the code:
//Edit Method
public string Editar(DCadastro cadastro)
{
string resp = "";
SqlCommand cmd = new SqlCommand();
SqlConnection con = new SqlConnection();
try
{
con.ConnectionString = Conexao.Cn;
con.Open();
cmd.Connection = con;
//// Inicia o escopo de transação
SqlTransaction transaction = con.BeginTransaction("SampleTransaction");
//// Informa o SqlCommand em qual escopo que se passará a transação de dados
cmd.Transaction = transaction;
cmd.CommandText = "UPDATE CLIENTE SET CLIENTE.nome = @nome WHERE CLIENTE.idCliente = @idCliente";
cmd.Parameters.AddWithValue("@nome", cadastro.Nome);
cmd.Parameters.AddWithValue("@idCliente", cadastro.IdCliente);
// Segunda consulta.
cmd.CommandText = "UPDATE CONTATO SET CONTATO.idTipoContato = @idTipoContato, CONTATO.conteudo = @conteudo WHERE CONTATO.idCliente = @idCliente";
cmd.Parameters.AddWithValue("@idTipoContato", cadastro.IdTipoContato);
cmd.Parameters.AddWithValue("@conteudo", cadastro.Conteudo);
resp = cmd.ExecuteNonQuery() == 1 ? "OK" : "Registro não foi inserido";
// Encerra o escopo de transação passando as operações para Banco de Dados.
transaction.Commit();
}
catch (Exception erro)
{
throw erro;
}
finally
{
if (con.State == System.Data.ConnectionState.Open) con.Close();
}
return resp;
}
If this action has to be done ALWAYS in both tables to make sense, you should use a transaction.
– Intruso
Cool, I’ll research more and thanks for the tip!
– Phil