Con risposta entitysql DbDataReader

  • martedì 13 marzo 2012 18:10
     
      Contiene codice

    salve a tutti prendendo questo codice di esempio tratto da msdn come posso far si che DbDataReader si fermi alla prima riga trovata senza continuare la sua ricerca fino alla fine della tabella?

    Using conn As New EntityConnection("name=AdventureWorksEntities")
        conn.Open()
       
        Dim esqlQuery As String = "SELECT VALUE Contact FROM AdventureWorksEntities.Contacts " & _
            " AS Contact WHERE Contact.LastName = @ln AND Contact.FirstName = @fn"
    
        Using cmd As New EntityCommand(esqlQuery, conn)
          
            Dim param1 As New EntityParameter()
            param1.ParameterName = "ln"
            param1.Value = "Adams"
            Dim param2 As New EntityParameter()
            param2.ParameterName = "fn"
            param2.Value = "Frances"
    
            cmd.Parameters.Add(param1)
            cmd.Parameters.Add(param2)
    
            Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
          
                While rdr.Read()
                    Console.WriteLine(rdr("FirstName"))
                    Console.WriteLine(rdr("LastName"))
                End While
            End Using
        End Using
        conn.Close()
    End Using

Tutte le risposte

  • martedì 13 marzo 2012 18:46
     
     Con risposta

    jetri wrote:

    salve a tutti prendendo questo codice di esempio tratto da msdn come posso far si che DbDataReader si fermi alla prima riga trovata senza continuare la sua ricerca fino alla fine della tabella?

            Using rdr As DbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)

                While rdr.Read()
                    Console.WriteLine(rdr("FirstName"))
                    Console.WriteLine(rdr("LastName"))
                End While

    Opzione 1: togli il while e fai solo una read
    Opzione 2: modifica la query mettendo Select VALUE top 1 ...
    Opzione 3: al posto di una ExecuteReader puoi usare ExecuteScalar che restituisce un object con il risultato della query (in pratica il valore corrispondente alla riga 0, colonna 0 del tuo resultset).

    Fai qualche prova in sql management server e poi sposta il tutto nel codice e riprova.


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    • Contrassegnato come risposta jetri mercoledì 14 marzo 2012 19:57
    •  
  • mercoledì 14 marzo 2012 08:40
    Proprietario
     
     

    Ciao jetri,

    Solo come informazione - Ti ho spostato il thread sul forum ADO.NET, Entity Framework e LINQ, trovando questo luogo più adatto alla tua domanda.

    Grazie della comprensione,


    Irina Turcu - Microsoft

    Tips & Tricks - Forum MSDN

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn