Visualizzazione dei risultati da 1 a 6 su 6

Discussione: SqlDataReader e Item

  1. #1

    SqlDataReader e Item

    ' query
    Dim strQuery As String
    strQuery = " SELECT MAX(Indice) AS IndiceMassimo From Vista "

    ' comando
    Dim objCommand As New SqlCommand(strQuery, objConnessione)
    ' DataReader
    Dim objDataReader As SqlDataReader = objCommand.ExecuteReader()

    dim intRisultato as integer
    intRisultato = objDataReader.Item("IndiceMassimo ")


    ERRORE: Tentativo non valido di lettura in assenza di dati

    Giuro che la query restituisce dati e la connessione funziona. Cosa c'è che non va? Voglio semplicemente un accesso a una colonna chiamandola per nome (Item)...

  2. #2
    forse dovresti utilizzare il metodo
    executescalar dell'oggetto command che ti restituisce il primo (e unico nel tuo caso) valore della prima colonna restituito dalla query
    Saluti a tutti
    Riccardo

  3. #3
    Grazie ma... questo mi limita moltissimo. Vorrei sapere se uso un metodo valido o se invece sbaglio qualcosa.

  4. #4
    non hailetto il datareader
    codice:
    ' query 
    Dim strQuery As String 
    strQuery = " SELECT MAX(Indice) AS IndiceMassimo From Vista " 
    
    ' comando 
    Dim objCommand As New SqlCommand(strQuery, objConnessione) 
    ' DataReader 
    Dim objDataReader As SqlDataReader = objCommand.ExecuteReader() 
    objDataReader.Read();
    dim intRisultato as integer 
    intRisultato = objDataReader.Item("IndiceMassimo ")

  5. #5
    Originariamente inviato da JackInTheGreen
    Grazie ma... questo mi limita moltissimo. Vorrei sapere se uso un metodo valido o se invece sbaglio qualcosa.
    Non capisco in cosa sei limitato. L'oggetto command che giustamente usi, ti offre dei metodi. In particolare i metodi che interessano possono essere:
    executereader
    executescalar
    executenonquery
    Il primo lo usi quando vuoi riempire un datareader e scorrere il datareader dal primo all'ultimo record per ad esempio popolare una dropdownlist (ma non mi sembra il tuo caso).
    Il secondo lo usi quando vuoi leggere un singolo valore restituito da una query. E questo mi sembra il tuo caso. Ma si usa ad esempio anche con query del tipo "select count(*) from tabella" oppure "select idcliente from clienti where ...".
    Il terzo lo usi quando effettui modifiche, inserimenti o eliminazione di record e ti restituisce come valore di ritorno il numero di righe "affette" dalle modifiche.
    Saluti a tutti
    Riccardo

  6. #6
    E' vero non avevo letto il Datareader!

    Grazie dell'aiuto, con un po' d'esperienza ridurrò il numero delle mie fagianate !!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.