none
Erro ao gravar dados no banco.. RRS feed

  • Pergunta

  • Ola pessoal, como eu postei no lugar errado, vou fazer a mesma pergunta que fiz...

    O meu banco esta sendo gravado duas vezes a mesma coisa, por exemplo: eu preenche o meu formulario e ao enviar gera dois id diferentes mas com os mesmo conteudos.
    Veja o codigo:



                    
    
    //// primeira tabela//////////////////////
    
    string _strSQLProprietario = "INSERT INTO SA_DADOS_PROPRIETRARIO(DP_C_NOME, DP_N_TELEFONE, DP_N_CELULAR, DP_C_EMAIL,"
                                                                                            
                                                                                            + "DP_C_NACIONALIDADE, DP_C_ESTADO_CIVIL, DP_N_DATA_NASCIMENTO,"
                                                                                            
                                                                                            + "DP_C_PROFISSAO, DP_N_RG, DP_C_EMISSAO, DP_N_CPF)"
                                                        
                                                        + "VALUES(\'" + objMLCadastro.ML_Nome + "\',\'" + objMLCadastro.ML_Telefone + "\',\'" + objMLCadastro.ML_Celular + "\',\'" + objMLCadastro.ML_Email + "\',\'" +
                                                        
                                                        objMLCadastro.ML_Nacionalidade + "\',\'" + objMLCadastro.ML_EstadoCivil + "\',\'" + objMLCadastro.ML_DataNascimento + "\',\'" +
                                                        
                                                        objMLCadastro.ML_Profissao + "\',\'" + objMLCadastro.ML_RG + "\',\'" + objMLCadastro.ML_Emissor + "\',\'" + objMLCadastro.ML_CPF + "\');"
                                                        
                                                        + "SELECT LAST_INSERT_ID()";
    
                    MySqlDataAdapter mySqlAdapter = new MySqlDataAdapter(_strSQLProprietario, conn);
                    mySqlAdapter.SelectCommand.BeginExecuteNonQuery();
                    mySqlAdapter.Fill(myDataTable);
                    
                    foreach (DataRow dr in myDataTable.Rows)
                    {
                        objMLCadastro.ML_ID = Convert.ToInt32(dr["LAST_INSERT_ID()"]);
                    }
                    mySqlAdapter.SelectCommand.Dispose();
    
    
    
    
    //////segunda tabela////////////////////////////
    
    
                        
    string _strSQLImoveis = "INSERT INTO SA_DADOS_IMOVEIS(DI_DP_N_ID, DI_C_FINALIDADE, DI_C_TIPO_IMOVEL, DI_C_ENDERECO, DI_C_COMPLEMENTO,"
    
                                                            + "DI_C_BAIRRO, DI_C_CIDADE, DI_C_ESTADO, DI_N_CEP, DI_C_AREA, DI_C_CURTA_DESCRICAO,"
    
                                                            + "DI_C_DESCRICAO, DI_C_PRECO, DI_C_EDIFCOND, DI_N_CODSANASA, DI_N_CODCPFL)"
    
                                + "VALUES(\'" + objMLCadastro.ML_ID + "\',\'" + objMLCadastro.ML_Finalidade + "\',\'" + objMLCadastro.ML_Tipo + "\',\'" +
    
                                                objMLCadastro.ML_Endereco + "\',\'" + objMLCadastro.ML_Complemento + "\',\'" + objMLCadastro.ML_Bairro + "\',\'" +
    
                                                objMLCadastro.ML_Cidade + "\',\'" + objMLCadastro.ML_Estado + "\',\'" + objMLCadastro.ML_CEP + "\',\'" + objMLCadastro.ML_AreaMetro + "\',\'" +
    
                                                objMLCadastro.ML_CurtaDescricao + "\',\'" + objMLCadastro.ML_Descricao + "\',\'" + objMLCadastro.ML_Preco + "\',\'" +
    
                                                objMLCadastro.ML_EdifCond + "\',\'" + objMLCadastro.ML_CodSanasa + "\',\'" + objMLCadastro.ML_CodCPFL + "\');"
                                                +"SELECT LAST_INSERT_ID()";
    
    
    
                    MySqlDataAdapter mySqlAdapterImoveis = new MySqlDataAdapter(_strSQLImoveis, conn);
                    mySqlAdapterImoveis.SelectCommand.BeginExecuteNonQuery();
                    mySqlAdapterImoveis.Fill(myDataTable);
    
                    foreach(DataRow dr in myDataTable.Rows)
                    {
                        objMLCadastro.ML_ID = Convert.ToInt32(dr["LAST_INSERT_ID()"]);
                    }
                    mySqlAdapterImoveis.SelectCommand.Dispose();
    
    




    Eu nao sei o que esta acontecendo, mas ja coloquei o ExecuteNowQuery() e acontece a mesma coisa...

    obrigado.
    terça-feira, 26 de janeiro de 2010 20:05

Respostas

  • Bom dia Jackson
    Aparentemente o erro está nesta parte:
                    mySqlAdapter.SelectCommand.BeginExecuteNonQuery();
    mySqlAdapter.Fill(myDataTable);
    Sugiro q tu não inclua a query select na primeira instrução, mas resete o SelectComand antes de chamar o fill, tipo:

                    mySqlAdapter.SelectCommand.BeginExecuteNonQuery();
    mySqlAdapterImoveis.SelectCommand = "SELECT LAST_INSERT_ID() "
     mySqlAdapter.Fill(myDataTable);

    • Marcado como Resposta Jackson.Thomas quinta-feira, 27 de maio de 2010 13:01
    quinta-feira, 4 de março de 2010 11:24

Todas as Respostas

  • Jackson,

    Como os métodos que executam essas queries são chamados? Aparentemente os comandos estão corretados. Você sem perceber não está chamando esses métodos 2 vezes?
    terça-feira, 2 de março de 2010 13:34
  • Bom dia Jackson
    Aparentemente o erro está nesta parte:
                    mySqlAdapter.SelectCommand.BeginExecuteNonQuery();
    mySqlAdapter.Fill(myDataTable);
    Sugiro q tu não inclua a query select na primeira instrução, mas resete o SelectComand antes de chamar o fill, tipo:

                    mySqlAdapter.SelectCommand.BeginExecuteNonQuery();
    mySqlAdapterImoveis.SelectCommand = "SELECT LAST_INSERT_ID() "
     mySqlAdapter.Fill(myDataTable);

    • Marcado como Resposta Jackson.Thomas quinta-feira, 27 de maio de 2010 13:01
    quinta-feira, 4 de março de 2010 11:24