SqlDataSource

domenica 13 luglio 2008 - 15.07

alba Profilo | Newbie

ciao a tutti, vorrei utilizzare un sqldatasource per sfruttare la cache di mssql. Il problema e' che il mio sqldatasource si collega ad una stored procedure che contiene 5 select e vorrei capire come ottenere i 5 recordset.
grazie

alx_81 Profilo | Guru

>ciao a tutti, vorrei utilizzare un sqldatasource per sfruttare
>la cache di mssql. Il problema e' che il mio sqldatasource si
>collega ad una stored procedure che contiene 5 select e vorrei
>capire come ottenere i 5 recordset.
Ciao,
ipotizza di avere un sqldatasource fatto così:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ti allego un esempio in C#:

DataSet ds = ((DataView)SQL1.Select(DataSourceSelectArguments.Empty)).Table.DataSet; Response.Write(ds.Tables.Count);

Basta scorrere l'elenco delle tabelle che fanno parte del dataset del tuo sql data source.

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

alba Profilo | Newbie

grazie! problema risolto

gae58 Profilo | Senior Member

Ho letto con inetresse il tuo esempio e credo che, forse, possa fare quello che penso da un po' di tempo.

DataSet ds = ((DataView)SQL1.Select(DataSourceSelectArguments.Empty)).Table.DataSet;
> Response.Write(ds.Tables.Count);
Attraverso questo esempio leggi quante tabelle ci sono nell'SqlDataSource. Tramite l'uso del dataView è possibile passare al DataSet o DataAdapter il contenuto della tabella?

Ho fatto varie prove, ma senza risultati.
tipo:
ds1.Tables["Tabella"].Rows
a questo punto non ho capito come fare a poter leggere i dati

E' fattibile?

Ti chiedo ciò in quanto se funziona, non ho la necessità di dover aprire varie select sulla stessa tabella

grazie


Gaetano

alx_81 Profilo | Guru

>Attraverso questo esempio leggi quante tabelle ci sono nell'SqlDataSource.
>Tramite l'uso del dataView è possibile passare al DataSet o DataAdapter
>il contenuto della tabella?
>Ti chiedo ciò in quanto se funziona, non ho la necessità di dover
>aprire varie select sulla stessa tabella
Scusami, ma ti devo chiedere la situazione reale, spiegata in dettaglio.. Non ho capito cosa ti serve sapere..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

hai ragione, non sono statao tanto chiaro.

in una web form, ho una gridView collegata ad un SqlDataSource.
La gridView può essere filtrata ttraverso quttro DDL.
Ogni DDl viene valorizzata attraverso un select con distinct che punta alla stessa tabella.
ALlo stato delle mie conoscenze, dovrei inserire 4 SqlDataSource con la stessa tabella.
La prima per la grid e le altre 3 per i DDL.
Quindi GriView TabellaA
DDL1 = select disitnct DatoA from TabellaA
DDL2 = select disitnct DatoB from TabellaA
DDL3 = select disitnct DatoC from TabellaA
DDL3 = select disitnct DatoD from TabellaA

Attraverso un bottone eseguo il filtro.

Pensavo, anche eprchè mi può servire in altre situazioni, non posso copiare la select dell'SqlDataSource in un dataSet o dataAdapter ed utilizzarla per valorizzare le DDL?

Spero di non aver detto fesserie


Gaetano

alx_81 Profilo | Guru

>Pensavo, anche eprchè mi può servire in altre situazioni, non
>posso copiare la select dell'SqlDataSource in un dataSet o dataAdapter
>ed utilizzarla per valorizzare le DDL?
Ma quando bindi il SqlDataSource cmq il metodo di select ti torna un DataTable (o un DataSet).. Io continuerei ad utilizzare i datasource distinti.. è anche più manutenibile.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

ti ringrazio per la risposta, ma solo percuriosità quello che ho chiesto si può fare?

Mi potresti dire dove sbaglio col codice?

grazie

Gaetano

alx_81 Profilo | Guru

>ti ringrazio per la risposta, ma solo percuriosità quello che ho chiesto si può fare?
Forse è un mio limite.. ma non capisco a cosa possa servirti prendere la select e mettere il risultato in un dataset visto che il SQLDataSource già lo fa di suo.
Se intendi invece, visto che le query sono simili e sulle stesse tabelle, evitare di scrivere N datasource, puoi fare un multistatement (ad esempio una stored procedure con dentro i tuoi N SELECT) e poi, avendo un dataset, ogni select corrisponde ad una DataTable del tuo DataSet tornato.
Ti chiedo scusa, ma evidentemente non capisco quello che vuoi fare..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

gae58 Profilo | Senior Member

Più volte ho letto della possibilità di leggere una valore attraverso (non ricordo bene la sintassi) row[0].col[0] e non capendo ancora bene il tutto, mi è stato detto che era possibile effettuarlo col dataTable.

Forse sono assillato dall'aprire troppi dataSource, potrei copiare l'SqlDataSource in un dataTabele e poi gestirla per tutto ciò che può servire.

>Se intendi invece, visto che le query sono simili e sulle stesse
>tabelle, evitare di scrivere N datasource, puoi fare un multistatement
>(ad esempio una stored procedure con dentro i tuoi N SELECT)
>e poi, avendo un dataset, ogni select corrisponde ad una DataTable
>del tuo DataSet tornato.
si, questo è interessante, ma cosa dovrei leggere per poterlo gestire?


Gaetano

alx_81 Profilo | Guru

>Più volte ho letto della possibilità di leggere una valore attraverso
>(non ricordo bene la sintassi) row[0].col[0] e non capendo ancora
>bene il tutto, mi è stato detto che era possibile effettuarlo
>col dataTable.
Il metodo Select del SQLDataSource, torna un DataView se il tipo di comando (DataSourceMode) è impostato come DataSet. Se è impostato come DataReader, torna un IDataReader. Se hai in mano un dataview, la sua proprietà Table è il datatable. Ed in tal modo ottieni l'istanza del datatable che puoi utilizzare come meglio credi.

>Forse sono assillato dall'aprire troppi dataSource, potrei copiare
>l'SqlDataSource in un dataTabele e poi gestirla per tutto ciò
>che può servire.
Copiare SQLDataSource in un DataTable, proprio non lo capisco. Al massimo puoi mettere il risultato dell'esecuzione del comando SELECT dentro un DataSet..
Per questo, se vuoi raccordare tutti i comandi all'interno di un DataSource, ti consigliavo il multistatement.
Osserva il seguente esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come vedi ci sono 3 query.
Ora, tramite il dataview, leggiamo i tre resultset da codebehind:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5