Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    285

    Contare record con dataReader

    Sto cercando una proprietà che mi permetta di contare i record inseriti in una determinata tabella ma mi sembra non esista.. esiste una soluzione che sia simile al vecchio asp tipo

    miaVariabile=mioRecordset.recordCount?

    In alternativa come ovviare senza ricorrere ad un dataset?


    Grazzzzie!

  2. #2
    In effetti non esiste nessuna proprietà o metodo specifici dell'oggetto dataReader per farlo.

    Cmq un sistema relativamente veloce potrebbe essere quello di eseguire prima la query nel segg. modo:

    codice:
     
    Dim conn As New Odbc.OdbcConnection(proprieta.strConn)
    Dim cmd As New Odbc.OdbcCommand
    Dim DR As Odbc.OdbcDataReader
    Dim risultato As Integer
    cmd.Connection = conn
    conn.Open()
    
    cmd.CommandText = "SELECT COUNT(*) AS cnt FROM tabella"
    DR = cmd.ExecuteReader()
    
    While DR.Read
        risultato=DR("cnt")
    End While
    
    ....
    "La vendetta è un piatto che va gustato freddo"
    Antico proverbio Klingon.
    Lo chiamavano il 'Computer Umano'. Sapeva contare fino a 20 e nudo fino a 21!

  3. #3
    codice:
    Public Function COUNT(ByVal strQuery As String, ByVal ConnectionStringAs String) As Integer
                Try
    
                    objConn = New OdbcConnection(ConnectionString)
                    objConn.Open()
                    objCmd = New OdbcCommand(strQuery, objConn)
                    Dim quanti As Integer = objCmd.ExecuteScalar()
                    objCmd.Connection.Close()
                    objConn.Close()
                    Return quanti
                Catch ex As OdbcException
                    Return Nothing
                End Try
    End Function

    dim my_var as integer = COUNT("SELECT COUNT(*) FROM tb", My_Conn)

  4. #4
    senno prova così, io però uso SQL Server.

    <%@ import Namespace="System.Data.SqlClient" %>
    <%@ Page Language="VB" Debug="true" %>
    <script runat = "server">
    dim contatore As Integer

    sub page_load
    dim connessione As SqlConnection
    dim cmdSelect As SqlCommand
    dim puntatore As SqlDataReader

    connessione = new sqlConnection( "Server=(local);uid=Administrator;pwd=***;database =master")
    connessione.open()

    cmdSelect = new SqlCommand ("select nomeColonna from livello1", connessione)
    puntatore = cmdSelect.executeReader()
    contatore = 0
    while puntatore.read()
    contatore = contatore + 1
    end while

    puntatore.close()
    connessione.close()

    lblContatore.text = "i record contenuti nella tabella sono: " & contatore
    end sub
    </script>

    <html><body><head><title>prova contatore</title></head>
    <form runat="server">
    <asp:label ID="lblContatore" runat="server"></asp:label>
    </form></body></html>


    ziao Teo!
    non siamo altro ciò che sappiamo

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    285

    Grazie..

    Grazie a tutti voi, mi siete stati molto utili ma a questo punto mi sorge una domanda, ho notato che per contare incrementate una variabile in un ciclo, una semplice alternativa ma non sarà troppo dispendiosa di risorse se i record dovessero diventare molti?

  6. #6
    infatti il datareader lo devi utilizzare solo se lavori con piccoli dati e sopratutto ti serve un cursore forward only.

    quindi le cose sono 2.
    o conti i recordo mano a mano che scorri il DReader oppure lasci perdere e ti affidi ad una sql.

    Meglio ancora utilizzi il dataset.

  7. #7
    ummmm: quindi le cose sono 2.
    o conti i recordo mano a mano che scorri il DReader oppure lasci perdere e ti affidi ad una sql.

    cosa è una sql? non ho capito, mi incuriosisci.
    non siamo altro ciò che sappiamo

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    285
    come pensavo.. i dati in effetti iniziano ad essere consistenti ma non vorrei utilizzare un dataset in quanto non faccio grandi cose nella pagina ed ho già fatto il resto col datareader. L'unica cosa mancante è il conteggio dei record.. ritentero' una sql che avevo già provato ma che mi restituiva errore.

    Grazie ancora,
    Buona vita



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 © 2025 vBulletin Solutions, Inc. All rights reserved.