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

    [.NET/C#] dataset per tabelle molto grandi

    ciao a tutti.
    premetto che sono alle prime armi con c# e con ado.net
    il problema è questo :

    ho creato un dataset che contiene 2 tabelle con molti campi e moltissime righe...

    per l'applicazione che devo fare,
    per ogni riga della prima tabella devo fare una ricerca di righe sulla seconda in base a 3-4 campi..

    vorrei sapere che approccio devo seguire.... cioè senza andare troppo nel codice ...come devo fare ?

    per ogni riga eseguire una sql?
    oppure per ogni riga creare un oggetto (dataset,dataadapter ...boh?)
    ci sono strumenti che risolvono questo probl (datarelation..o altro...)

    vorrei almeno un'indicazione....
    grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,464
    Non so se sia possibile farlo poichè non conosco le caratteristiche strutturali dei dati con cui lavori, ma non riesci ad unire già ciascuna riga della prima tabella con la corrispondente nella seconda attraverso la query SQL, magari con uno statement INNER JOIN?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    con ado creavo un record set con tutte le righe della tabella A

    poi le scorrevo in un ciclo e per ognuna cercavo le corrispondenze in B ...vorrei fare la stessa cosa...ma non ci sono i recordset!!

    ho cambiato perchè con ado mi risultava tutto troppo lento e voglio provare la versione "disconnessa" di ado.net

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,464
    Originariamente inviato da maurodefilippis
    poi le scorrevo in un ciclo e per ognuna cercavo le corrispondenze in B ...vorrei fare la stessa cosa...ma non ci sono i recordset!!
    Puoi semplicemente scandire i DataSet in cui scarichi i record ottenuti dalle due query, eseguite tramite un Command e salvate nel DataSet richiamando il metodo Fill dell'oggetto Adapter.

    Ho usato nomi generici per le classi in quanto non so quale client per l'accesso ai dati utilizzi al momento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    ciao a tutti...
    per ora ho fatto così ...ditemi se è corretto (non guardate la sintassi):


    codice:
    //creo il dataset principale che ha due grandi tabelle 
    table1Adapter.Fill(Dataset1.table1);
    table2Adapter.Fill(Dataset1.table2); 
    for each ( riga in table1 )
    {
        tempAdapter = new OleDbDataAdapter stringaSql,oleDbConnection1);
        //stringaSql prende dati da table2 in base ai campi della riga corrente di table1
        tempAdapter.Fill(Dataset1, "temptable");
        visualizza_dati_in_una_grid(temptable);
    }
    Il procedimento è corretto o si puo ottimizzare?
    in questo modo si hanno tanti accessi al disco oppure si sfrutta ancnora la disconnessione del dataset
    dal database salvato su disco? ...visto che le righe sono molte se per ogni riga si accede
    al disco perdo tutti i vantaggi di ado.net.....

  6. #6
    come ho scritto sopra più o meno funziona ma è troppo lento e poi ogni volta nella listbox ci sono tutti i dati già letti prima ed i nuovi...

    quindi non va bene...

    e se usassi un oggetto command e poi un datareader?

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.