ciao, l'obiettivo è quello di rendere + performante l'applicazione e il progetto è quello di popolare varie combobox (DisplayMember e ValueMember) da dati provenienti dal database.
Al momento creo un OleDbConnection, un OleDbCommand e OleDbDataReader, ciclo sui dati della select e popolo i combobox, siccome ogni combo deve essere popolata con dati provenienti da diverse tabelle, per ogni combobox cambio il commandtext dell'OleDbCommand rifaccio il ciclo e popolo la combo, questo per ogni combo come detto.
Il tutto funziona, ma vorrei qualcosa di + performante in termini quindi di velocità ma soprattutto vorrei poter lavorare in modo disconnesso. Insomma, lo sò che i dataset in termini di performance non sono proprio adatti, ma forse nel mio caso creare un dataset è opportuno, in quanto vorrei poter archiviare tutto i risultati delle query in memoria e poi fare delle operazioni in modo disconnesso. Per esempio popolare una determinata combobox dalla selezione di una certa item di un'altra combobox. Fare questo con i datareader significa ricollegarsi al database quando seleziono una certa item di una combobox e filtrare il popolamento di un'altra combo secondo il valore selezionato nella prima combo, mentre con i dataset, siccome ho tutto in memoria dovrei poter fare queste operazioni in modo disconnesso.
La domanda è: mi date un consiglio su come progettare il dataset?
Riassumendo: vorrei poter creare una sola volta la rappresentazione tabellare di tutte le select che adesso utilizzo per popolare le combo, disconnettermi e lavorare sull'oggetto disconnesso.. fino a qui tutto teoria, ma nella pratica?
ho anche provato a fare qualcosa, non sò se stò facendo bene, non sò se è questo codice è + performante rispetto ad un codice che utlizza i datareader, ma vorrei trovare il massimo delle performance, visto che mi stò collegando ad un db su un mainframe as400 e per riempire due combo ci mette circa 5 secondi:
Ciaocodice:.. connessione .. DataSet dsAnaBase = new DataSet(); OleDbDataAdapter adpFornitore = new OleDbDataAdapter("SELECT FORCD,FORRASOC FROM DDFORPT",cn); OleDbDataAdapter adpGruppo = new OleDbDataAdapter("SELECT XCDEL,XCDTB,XDTAB FROM LIB.ASD00F WHERE XCDTB='GRU'", cn); adpFornitore.Fill(dsAnaBase,"tblFornitore"); adpGruppo.Fill(dsAnaBase, "tblGruppo"); cn.Close(); comboFornitore.DataSource = dsAnaBase.Tables["tblFornitore"]; comboFornitore.DisplayMember = "FORRASOC".ToUpper().Trim(); comboFornitore.ValueMember = "FORCD".Trim(); comboFornitore.SelectedIndex = 0; comboGruppo.DataSource = dsAnaBase.Tables["tblGruppo"]; comboGruppo.DisplayMember = "XDTAB".ToUpper().Trim(); comboGruppo.ValueMember = "XCDEL".Trim(); comboGruppo.SelectedIndex = 0;![]()


:
Rispondi quotando