Insert em tabelas de composição e agregação

MySQL

15/09/2010

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.

Elton Santos.

Curtidas 0

Respostas

Elton Santos.

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é

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
POSTAR