none
Duvida sobre SqlDataReader Recuperar ID após inset com SCOPE_INDENTITY() RRS feed

  • Pergunta

  • Bom dia,

    Estou com um problema,na proc eu faço esse select após o insert

    Select

     

    SCOPE_IDENTITY() As intEnquete

    Recupera o id dessa forma em C#:

    É  unico que usa o Datareader,porem ao ler esse cara:

    _intEnquete = Convert.ToInt32(dr["intEnquete"].ToString());

    ele diz que já possui um aberto e precisa ser fechado primeiro,sempre tive problema com isso,feito dessa forma.

    SqlDataReader

     

    dr = (SqlDataReader)db.ExecuteReader(_command, _transaction);

     

    if (dr.HasRows)

    {

    dr.Read();

    _intEnquete =

    Convert.ToInt32(dr["intEnquete"].ToString());

    }

    dr.Close();

    Alguem consegue me ajudar???

    Obrigado


    Leandro
    quarta-feira, 19 de agosto de 2009 14:44

Todas as Respostas

  • Leandro,


    Mas qual é o problema?


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quarta-feira, 19 de agosto de 2009 20:01
  • Junior obrigado pelo retorno,

    Gera o seguinte problema.

    Quando ele passa por esse código: dr["intEnquete"].ToString()

    gera a seguinte mensagem:

    Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro

    Acontece que o código foi criado numa unica classe nova,onde possui um unico método,ou seja existe um só metodo na classe que faz conexão com o banco e executa o processo.

    Porque ele gera essa mensagem,se não foi criado nenhum outro datareader para dizer que preciso fechar primeiro.

    Obrigado,


    Leandro
    quinta-feira, 20 de agosto de 2009 10:53
  • Leandro,

    Post a mensagem de erro?


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 20 de agosto de 2009 13:13