Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Vb.Net - Asp.net 2.0] Datareader

    Salve a tutti,
    ho un datareader che seleziona dei dati da un database access e il suo codice è il seguente:

    codice:
    Dim connessione As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Gui\Documenti\Visual Studio 2005\WebSites\WebSite8\database.mdb; Persist Security Info=False")
            connessione.Open()
            Dim Seleziona As String
            Seleziona = "SELECT * FROM Utenti"
            Dim controlla As New OleDbCommand(Seleziona, connessione)
            'controlla.ExecuteReader()
            Dim Datareader As OleDbDataReader
            Datareader = controlla.ExecuteReader
            Datareader.Read()
    Ora inanzi tutto vorrei sapere se c'è un modo per sapere quanti risultati mi ha restituito, a parte leggerne tutti i risultati con un ciclo while ed incrementarne un contatore.

    Dopo aver creato questo datareader vorrei mettere i dati ottenuti in una Gridview, ho trovato sul forum un codice che ho adattato nel seguente modo:


    codice:
    Dim dt As New DataTable
    
            Dim myColumn As New DataColumn()
            myColumn.DataType = System.Type.GetType("System.Int32")
            myColumn.ColumnName = "Indice"
            dt.Columns.Add(myColumn)
    
            ' link
            myColumn = New DataColumn()
            myColumn.DataType = Type.GetType("System.Integer")
            myColumn.ColumnName = "Nominativo"
            dt.Columns.Add(myColumn)
    
            While Datareader.Read
                dt.NewRow("Indice") = Datareader.Item(0)
                dt.NewRow("Nominativo") = Datareader.Item(1)
    
            End While
            GridView1.DataSource = dt
    Il codice però mi da errore nella creazione delle nuove righe, indicandomi errore nella seguente riga:
    codice:
     dt.NewRow("Indice") = Datareader.Item(0)
    Cosa c'è di sbagliato? secondo logica sto solo creando una nuova riga della datatable e nulla più, ma sicuramente mi è sfuggito qualcosa.

    Vi ringrazio in anticipo per le risposte,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Forse mi sbaglio (o non capisco bene cosa vuoi ottenere) ma mi sembra che tu stia enormemente complicando una procedura che in ASP.NET è semplicissima.

    Per fare quello che serve a te, e cioè estrarre dati da un database, avere la possibilità di contarli, di gestirli campo per campo e di visualizzarli in un datagrid io opterei per un dataset.

    Invece di usare un datareader con il quale popolare successivamente una datatable, io userei un DataAdapter con il quale popolerei un DataSet.

    A quel punto puoi passare al GridView il DataSet come DataSource e al resto pensa ASP.NET
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  3. #3

    Re: [Vb.Net - Asp.net 2.0] Datareader

    Originariamente inviato da Neptune
    Salve a tutti,
    ho un datareader che seleziona dei dati da un database access
    se proprio vuoi usare un datareader potresti provare il metodo Load della datatable

    http://msdn2.microsoft.com/en-us/library/7x8ccbsb.aspx
    Saluti a tutti
    Riccardo

  4. #4
    Originariamente inviato da simo
    Forse mi sbaglio (o non capisco bene cosa vuoi ottenere) ma mi sembra che tu stia enormemente complicando una procedura che in ASP.NET è semplicissima.

    Per fare quello che serve a te, e cioè estrarre dati da un database, avere la possibilità di contarli, di gestirli campo per campo e di visualizzarli in un datagrid io opterei per un dataset.

    Invece di usare un datareader con il quale popolare successivamente una datatable, io userei un DataAdapter con il quale popolerei un DataSet.

    A quel punto puoi passare al GridView il DataSet come DataSource e al resto pensa ASP.NET
    Mi faresti un esempio del codice che ti ho postato ma utilizzando i dataset?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5

    Re: Re: [Vb.Net - Asp.net 2.0] Datareader

    Originariamente inviato da riccardone
    se proprio vuoi usare un datareader potresti provare il metodo Load della datatable

    http://msdn2.microsoft.com/en-us/library/7x8ccbsb.aspx

    Ho provato a utilizzare il codice del link per popolare la datatable, ne si blocca ne mostra nulla, com'è possibile? il codice che ho utilizzato è questo:

    codice:
            'Creare dataTable
            Dim dt As New DataTable
    
            Dim myColumn As New DataColumn()
            myColumn.DataType = System.Type.GetType("System.Int32")
            myColumn.ColumnName = "Indice"
            Dt.Columns.Add(myColumn)
    
            ' link
            myColumn = New DataColumn()
            myColumn.DataType = Type.GetType("System.String")
            myColumn.ColumnName = "Nominativo"
            Dt.Columns.Add(myColumn)
    
            dt.Load(Datareader)
            GridView1.DataSource = dt
    Ho provato anche a creare la data table e a farci direttamente il load del datareader, senza crearci le colonne ma il risultato è identico. In cosa sbaglio?

    Il risultato che voglio ottenere è sia quello di poter visualizzare il singolo campo per poterci non so valorizzare una singola variabile, sia poter stampare a schermo tutti i campi selezionati.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  6. #6
    dopo aver popolato la datatable e averla assegnata alla gridview chiami il metodo databind della gridview vero?
    Se la risposta e' no, sara' dura mandar giu' ado.net 2.0 e asp.net a suon di post quindi ti consiglio di dedicare un certo periodo all'approfondimento teorico oltre che pratico.
    Ad esempio, perche' prima di riempire una generica datatable senti la necessita' di creare manualmente la sua struttura? Se hai bisogno di una datatable fatta in un certo modo, allora dovresti imparare ad utilizzare dataset e datatable tipizzati (e creati con l'apposito designer).
    Se usi la comoda funzione Load della datatable, non c'e' alcun bisogno di definire manualmente la struttura ma bastano poche linee di codice
    un es. che si commenta da solo e che comunque non fa uso delle comode tecniche dell'objectdatasource offerte da asp.net 2.0

    codice:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                GridView1.DataSource = getDataTable();
                GridView1.DataBind();
            }
        }
    
        private DataTable getDataTable()
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection(@"tuaconnectionstringmaemegliometterladaunaltraparte"))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT * FROM tuatabella";
                conn.Open();
                dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
            }
            return dt;
        }
    Saluti a tutti
    Riccardo

  7. #7
    Originariamente inviato da riccardone
    dopo aver popolato la datatable e averla assegnata alla gridview chiami il metodo databind della gridview vero?
    Se la risposta e' no, sara' dura mandar giu' ado.net 2.0 e asp.net a suon di post quindi ti consiglio di dedicare un certo periodo all'approfondimento teorico oltre che pratico.
    Ad esempio, perche' prima di riempire una generica datatable senti la necessita' di creare manualmente la sua struttura? Se hai bisogno di una datatable fatta in un certo modo, allora dovresti imparare ad utilizzare dataset e datatable tipizzati (e creati con l'apposito designer).
    Se usi la comoda funzione Load della datatable, non c'e' alcun bisogno di definire manualmente la struttura ma bastano poche linee di codice
    un es. che si commenta da solo e che comunque non fa uso delle comode tecniche dell'objectdatasource offerte da asp.net 2.0

    codice:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                GridView1.DataSource = getDataTable();
                GridView1.DataBind();
            }
        }
    
        private DataTable getDataTable()
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection(@"tuaconnectionstringmaemegliometterladaunaltraparte"))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "SELECT * FROM tuatabella";
                conn.Open();
                dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
            }
            return dt;
        }
    Ecco, mi ero dimenticato di richiamare il databind, spero di non essere palifitto per questa mia mancanza
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.