Insert em tabelas de composição e agregação
Eai Galera!
Qual é a melhor forma de fazer inserts em tabela de composição?
Estou desenvolvendo um sistema em asp.net e mysql. tenho uma tabela de curriculo e duas tabelas que compõem curriculo chamada de emprego_curriculo e cargo_curriculo, de forma que eu cadastro os dados básicos de um curriculo e depois tenho que inserir na tabela cargo_curriculo os cargos de interesse selecionados pelo usuario e em emprego_curriculo as experiencias profissionais cadastradas pelo usuario.
No sistema, eu tenho um objeto que representa o curriculo, onde cargos e empregos são um arraylist. na DAO do sistema, eu preciso inserir o curriculo e capturar o codigo dele.
Em seguida preciso percorrer os arraylist e fazer o insert um a um.
Os passos acima eu fiz, o problema é que minha classe acesso ao banco de dados insere o curriculo e me retorna o codigo dele, e caso der erro, retorna o codigo de erro. Mas como o retorno é do tipo inteiro, eu não sei dizer se deu erro ao inserir o curriculo ou não.
--método da classe curriculoDao
public Object Incluir(Curriculos curriculo){
Object retorno = -1;
try
{
MySql.Data.MySqlClient.MySqlCommand comando = new MySql.Data.MySqlClient.MySqlCommand();
CargosCurriculo cargo = new CargosCurriculo();
CurriculoEmprego emprego = new CurriculoEmprego();
StringBuilder sqlInsert = new StringBuilder();
sqlInsert.Append("INSERT INTO `curriculos`(`IdEscolaridade`,`Nome`,`CPF`,`Sexo`,`Endereco`,`Bairro`,`Cidade`,`UF`, ");
sqlInsert.Append("`CEP`,`Email`,`Telefone`,`Celular`,`DtNascimento`,`EstadoCivil`,`Curso`,`Veiculo`,`Observacoes`,`Senha`,`Usuario`) ");
sqlInsert.Append("VALUES(");
sqlInsert.Append(FormatarString.Formatar(curriculo.IdEscolaridade) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Nome) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cpf) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Sexo) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Endereco) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Bairro) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cidade) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Uf) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cep) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Email) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Telefone) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Celular) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.DataNascimento) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.EstadoCivil) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Curso) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Veiculo) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Observacoes) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Senha) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Usuario) + " ); select last_insert_id();");
curriculo.IdCurriculos = Conexao.ManterDados(sqlInsert.ToString());
for (int i = 0; i < curriculo.Cargos.Count; i++)
{
cargo = (CargosCurriculo)curriculo.Cargos[i];
StringBuilder sql = new StringBuilder();
sql.Append("INSERT INTO `cargo_curriculo` (`IdCurriculo`,`IdCargo`, `IdArea`) ");
sql.Append("VALUES( ");
sql.Append(FormatarString.Formatar(curriculo.IdCurriculos));
sql.Append(FormatarString.Formatar(cargo.IdCargo));
sql.Append(FormatarString.Formatar(cargo.IdArea));
sql.Append(")");
Conexao.ManterDados(sql.ToString());
}
for (int i = 0; i < curriculo.Empregos.Count; i++)
{
emprego = (CurriculoEmprego)curriculo.Empregos[i];
StringBuilder sqlEmprego = new StringBuilder();
sqlEmprego.Append("INSERT INTO `curriculo_empregos` (`IdCurriculo`,`Nome`,`Cargo`,`DtAdmissao`,`DtDemissao`) ");
sqlEmprego.Append("VALUES( ");
sqlEmprego.Append(FormatarString.Formatar(curriculo.IdCurriculos) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.Nome) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.Cargo) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.DataAdmissao) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.DataDemissao));
sqlEmprego.Append(")");
Conexao.ManterDados(sqlEmprego.ToString());
}
}
catch (ArgumentException ex)
{
throw new ArgumentException(ex.Message, ex.ParamName, ex);
}
return retorno;
}
-- metodo da classe de acesso ao banco de dados
public static int ManterDados(string comandoSql)
{
AbreConexao();
MySqlCommand cmd = new MySqlCommand(comandoSql, conn);
try
{
return cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
return ex.Number;
}
}
Elton Santos.
Curtidas 0
Respostas
Elton Santos.
15/09/2010
Consegui Fazer.
public Object Incluir(Curriculos curriculo)
{
int retorno = 0;
CargosCurriculo cargo = new CargosCurriculo();
CurriculoEmprego emprego = new CurriculoEmprego();
MySqlConnection conexao = Conexao.RecuperaConexao();
MySqlTransaction transa = conexao.BeginTransaction();
MySqlCommand comando = new MySqlCommand();
comando.CommandType = CommandType.Text;
comando.Connection = conexao;
comando.Transaction = transa;
//Insere Curriculo
try
{
StringBuilder sqlInsert = new StringBuilder();
sqlInsert.Append("INSERT INTO `curriculos`(`IdEscolaridade`,`Nome`,`CPF`,`Sexo`,`Endereco`,`Bairro`,`Cidade`,`UF`, ");
sqlInsert.Append("`CEP`,`Email`,`Telefone`,`Celular`,`DtNascimento`,`EstadoCivil`,`Curso`,`Veiculo`,`Observacoes`,`Senha`,`Usuario`) ");
sqlInsert.Append("VALUES(");
sqlInsert.Append(FormatarString.Formatar(curriculo.IdEscolaridade) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Nome) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cpf) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Sexo) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Endereco) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Bairro) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cidade) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Uf) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Cep) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Email) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Telefone) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Celular) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.DataNascimento.ToString("yyyy-MM-dd HH:mm")) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.EstadoCivil) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Curso) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Veiculo) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Observacoes) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Senha) + ", ");
sqlInsert.Append(FormatarString.Formatar(curriculo.Usuario) + " );");
comando.CommandText = sqlInsert.ToString();
comando.ExecuteNonQuery();
StringBuilder sqlSelect = new StringBuilder();
sqlSelect.Append("SELECT ID FROM curriculos WHERE `CPF` = ");
sqlSelect.Append(FormatarString.Formatar(curriculo.Cpf));
comando.CommandText = sqlSelect.ToString();
curriculo.IdCurriculos = Convert.ToInt32(comando.ExecuteScalar());
//Insere Cargos
try
{
for (int i = 0; i < curriculo.Cargos.Count; i++)
{
cargo = (CargosCurriculo)curriculo.Cargos[i];
StringBuilder sqlCargos = new StringBuilder();
sqlCargos.Append("INSERT INTO `cargo_curriculo` (`IdCurriculo`,`IdCargo`, `IdArea`) ");
sqlCargos.Append("VALUES( ");
sqlCargos.Append(FormatarString.Formatar(curriculo.IdCurriculos) + ", ");
sqlCargos.Append(FormatarString.Formatar(cargo.IdCargo) + ", ");
sqlCargos.Append(FormatarString.Formatar(cargo.IdArea));
sqlCargos.Append(")");
comando.CommandText = sqlCargos.ToString();
comando.ExecuteNonQuery();
}
}
catch (MySqlException ex)
{
transa.Rollback();
Conexao.FechaConexao();
return ex.Number ;
}
//Insere Empregos
try
{
for (int i = 0; i < curriculo.Empregos.Count; i++)
{
emprego = (CurriculoEmprego)curriculo.Empregos[i];
StringBuilder sqlEmprego = new StringBuilder();
sqlEmprego.Append("INSERT INTO `curriculo_empregos` (`IdCurriculo`,`Nome`,`Cargo`,`DtAdmissao`,`DtDemissao`) ");
sqlEmprego.Append("VALUES( ");
sqlEmprego.Append(FormatarString.Formatar(curriculo.IdCurriculos) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.Nome) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.Cargo) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.DataAdmissao) + ", ");
sqlEmprego.Append(FormatarString.Formatar(emprego.DataDemissao));
sqlEmprego.Append(")");
comando.CommandText = sqlEmprego.ToString();
comando.ExecuteNonQuery();
}
}
catch (MySqlException ex)
{
transa.Rollback();
Conexao.FechaConexao();
return ex.Number;
}
}
catch (MySqlException ex)
{
transa.Rollback();
Conexao.FechaConexao();
return ex.Number;
}
transa.Commit();
Conexao.FechaConexao();
return retorno;
}
GOSTEI 0
José
15/09/2010
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0