Fórum Pegado o id do ultimo Registro inserido no mysql por esta arquitetura N Camadas #6144

27/05/2009

0

Na interface     protected void ImageButton1_Click1(object sender,ImageClickEventArgs e)      {          structReturn = new StructReturn();                   IncluirCampos();          structReturn = Imovel.InsertImovel(imovel);          if (structReturn.Success)          {                lblError.Text = "Imovel Cadastrado com Sucesso!";                       }          else          {              lblError.Text = structReturn.MessageReturn;            }     Na DBacess       public DataSet ExecuteDataSet()         {             MySqlDataAdapter da = null;             DataSet ds = null;             try             {                 da = new MySqlDataAdapter();                 ds = new DataSet();                   da.SelectCommand = (MySqlCommand)cmd;                 da.Fill(ds);                             }             catch (Exception ex)             {                 throw new Exception(ex.Message);             }             return ds;         }         public int ExecuteNonQuery()         {             int i = -1;               try             {                 Open();                 i = cmd.ExecuteNonQuery();             }             catch(Exception ex)             {               throw new Exception(ex.Message);             }             finally             {                 Close();             }             return i;         } Na Framework   public static Structs.StructReturn InsertImovel(ImovelEntity imovelEntity)         {             try             {                 objStructReturn = new Framework.Structs.StructReturn();                   dbaccess.CommandText = "SP_INSERT_IMOVEL";          dbaccess.AddParameter("F_nome", imovelEntity.Nome);        dbaccess.AddParameter("F_vlrvenda", imovelEntity.Vlvenda);                 dbaccess.AddParameter("F_vlrcond", imovelEntity.Vlcond);          dbaccess.ExecuteNonQuery();                   objStructReturn.Success = true;               }             catch (Exception erro)             {                 objStructReturn.Success = false;                 objStructReturn.MessageReturn = erro.Message;             }               return objStructReturn;         }   Inserind   a inserindo blz , agora a minha duvida e como eu pego o ultimo registro inserido nesta       nesta arquitertura N camdas Utilizando o SGDB Mysql.                                       
Derocy Junior

Derocy Junior

Responder

Posts

27/05/2009

Fabio Mans

Olá não sei te responder se no MySQL existe alguma função como SCOPE_IDENTITY() do SQL, mas você pode criar um método que te retorno o MAX que é ANSI-SQL.

Para te ajudar vou passar um exemplo com SQL

RECUPERAR IDENTITY

CREATE TABLE [dbo].[TBL_ALUNO](
    [IDALUNO] [int] IDENTITY(1,1) NOT NULL,
    [NOME] [varchar](50) NULL,
    [EMAIL] [varchar](50) NULL,
    [DTCADASTRO] [datetime] NULL CONSTRAINT [DF_TBL_ALUNO_DTCADASTRO]  DEFAULT (getdate()),
 CONSTRAINT [PK_TBL_ALUNO] PRIMARY KEY CLUSTERED
(
    [IDALUNO] ASC
)



CREATE PROCEDURE [dbo].[INCLUIR_ALUNO]
    (

     @IDALUNO int output,
     @NOME     varchar(50),
     @EMAIL varchar(50)
     
    )
     

AS INSERT TBL_ALUNO
     (
     NOME,
     EMAIL
     )
 
VALUES
    (
     @NOME,
     @EMAIL
     
    )

SET @IDALUNO = SCOPE_IDENTITY()


 public static int CadastraAluno(string Nome, string Emai)
    {
        //Recupera a string de conexão
        string strConexao = ConfigurationManager.ConnectionStrings["cnnString"].ConnectionString;
        using (SqlConnection cnn = new SqlConnection(strConexao))
        {
            SqlCommand cmdInsere = new SqlCommand("INCLUIR_ALUNO", cnn);
            cmdInsere.CommandType = CommandType.StoredProcedure;

            //Adiciona os parâmetros
            cmdInsere.Parameters.Clear();
            cmdInsere.Parameters.Add("@NOME", SqlDbType.VarChar, 50).Value = Nome;
            cmdInsere.Parameters.Add("@EMAIL", SqlDbType.VarChar, 50).Value = Emai;

            SqlParameter IdAluno = new SqlParameter("@IDALUNO", SqlDbType.Int);
            IdAluno.Direction = ParameterDirection.Output;
            cmdInsere.Parameters.Add(IdAluno);

            cnn.Open();
            cmdInsere.ExecuteScalar();

            return Convert.ToInt32(cmdInsere.Parameters["@IDALUNO"].Value);
        }
    }



 protected void btnCadastrar_Click(object sender, EventArgs e)
    {
        int iIdAluno = clsAluno.CadastraAluno(TextBox1.Text, TextBox2.Text);
    }


Responder

Gostei + 0

01/06/2009

Devmedia

Derocy,
a resposta do consultor foi suficiente? podemos encerrar o chamado?
Responder

Gostei + 0

02/06/2009

Derocy Junior

Estou precisando fazer no mysql , e retonar dentro de uma variavel o id , caso alguem tenha um exemplo , na arquitetura 3 camadas que o Carlos junior mostrou nas videos aulas , so que com mysql ficaria show para min , mas o mans foi muito atencioso .. como Sempre rs .
Responder

Gostei + 0

04/06/2009

Fabio Mans

Com o MAX você consegue, SELECT MAX.
Crie um método que retorno este ID.
Responder

Gostei + 0

10/06/2009

Devmedia

Derocy,
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
Responder

Gostei + 0

17/06/2009

Devmedia

Derocy,
por falta de retorno estamos mudando o status do seu chamado para concluído. Caso tenha mais duvidas sobre o assunto aqui tratato, por favor, post aqi mesmo q o consultor voltará a lhe atender.
Responder

Gostei + 0

30/06/2009

Derocy Junior

solucionado  desta forma :   no SGDB (Mysql)   apos o insert coloquei   select LAST_INSERT_ID();   na Aplicação  puxei o retorno e deu certo ! objStructReturn.RetonarID = dbaccess.ExecuteScalar(); objStructReturn.Success = true;    
Responder

Gostei + 0

30/06/2009

Fabio Mans

Ótimo, a função LAST_INSERT_ID(); eu desconhecia.

Boa sorte.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar