DataSet

lunedì 13 novembre 2006 - 10.53

trinity Profilo | Guru

Io devo leggere il contenuto di una tabella sql sever con il Count in quanto devo sapere il numero di righe che questa tabella contiene.
Non c'è problema ovviamente, solo che la mia domanda è la seguente e se dopo aver letto la tabella i dati li butto dentro un dataset a questo punto potrei utilizzare tranquillamente ds.Tables(0).Rows.Count per sapere il numero di righe?
Secondo finchè l'applicazione non verrà chiusa posso sempre utilizzare il dataset e i dati al suo interno?

Ciao

Ps ovviamente il dataset lo devo riempire con una Select * from tabella, ossia prendendo tutti i dati dalla tabella in questione e poi associarli al dataset.


Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

19018 Profilo | Expert

>Io devo leggere il contenuto di una tabella sql sever con il
>Count in quanto devo sapere il numero di righe che questa tabella
>contiene.
>Non c'è problema ovviamente, solo che la mia domanda è la seguente
>e se dopo aver letto la tabella i dati li butto dentro un dataset
>a questo punto potrei utilizzare tranquillamente ds.Tables(0).Rows.Count
>per sapere il numero di righe?

Il dataset non è altro che una copia dei dati in memoria, per cui Rows.Count ti da l'effettivo numero di record di una tabella.

>Secondo finchè l'applicazione non verrà chiusa posso sempre utilizzare
>il dataset e i dati al suo interno?

Certo che puoi farlo, ma devi fare attenzione alla consistenza dei dati. Se i dati della tabella di origine vengono modificati per altre vie, il dataset (a meno di un refresh dei dati) si troverà in uno stato inconsistente. Devi assicurarti che in ogni istante i dati nel dataset siano consistenti rispetto ai dati nella tabella di origine.

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

trinity Profilo | Guru

Giusto grazie..
Ma è corretto che all'inizio i dati nel dataset li inserisco con un select *?
Secondo ti mi consigli questa strada oppure fare direttamente un select con all'interno un count e portarmi i dati con me...solo che in questo caso a differenza del dataset dovrei ogni volta fare aprire la tabella fare il count e prelavare il numero di righe.

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

19018 Profilo | Expert

>Giusto grazie..
>Ma è corretto che all'inizio i dati nel dataset li inserisco
>con un select *?

Fai la select delle colonne che ti servono, se ti servono tutte allora *.

>Secondo ti mi consigli questa strada oppure fare direttamente
>un select con all'interno un count e portarmi i dati con me...solo
>che in questo caso a differenza del dataset dovrei ogni volta
>fare aprire la tabella fare il count e prelavare il numero di
>righe.

Sfrutta il dataset, usa Rows.Count. In questo modo potrai sapere il numero aggiornato di record (prima refresh dei dati e poi Rows.count) facendo meno "lavoro" rispetto ad una nuova select con count.

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

trinity Profilo | Guru

Ok ma se io aggiungo o vario il contenuto della tabella...nel dataset devo ricaricare i dati, fare solo il refresh non mi basta.
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

19018 Profilo | Expert

Con refresh intendo quello, devi riallineare struttura e dati.

Stefano Passatordi

http://blogs.dotnethell.it/stem/

trinity Profilo | Guru

Stefano grazie mille dell'info!



Ciao

Ps..domenticavo a questo punto anche quando devo caricare a video dei dati con una stored nella quale eseguo una select * oppure con una where, mi conviene i dati associarli ad un dataset e poi quest'ultimo alla listview o datagrid. Così i dati posso gestirli in maniera disconnessa e solo se eseguo delle variazioni faccio il refresh del dataset. Oppure tranne in casi particolari come nel count, per esempio, gestisco la visualizzazione die dati senza il dataset in modo tale che risparmio codice da scrivere?



Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

19018 Profilo | Expert

>Ps..domenticavo a questo punto anche quando devo caricare a video
>dei dati con una stored nella quale eseguo una select * oppure
>con una where, mi conviene i dati associarli ad un dataset e
>poi quest'ultimo alla listview o datagrid. Così i dati posso
>gestirli in maniera disconnessa e solo se eseguo delle variazioni
>faccio il refresh del dataset. Oppure tranne in casi particolari
>come nel count, per esempio, gestisco la visualizzazione die
>dati senza il dataset in modo tale che risparmio codice da scrivere?

Il dataset è stato creato per aumentare le performance, usalo sempre quando puoi.Anche il count è più veloce sul dataset (lavora in memoria).

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

trinity Profilo | Guru

Grazie!!!
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

trinity Profilo | Guru

Stefano scusami ancora ma volevo postarti il codice che ho scritto per farti vedere se ho utilizzato una giusta logica di programmazione.

Nella form menu richiamo la stored che mi esegue la Select * From tabella e poi la associo al dataset:

Questo è il codice che eseguo per il dataset:

qui dichiaro le variabili che mi servono per la classe che mi esegue la stored Private ObjAlb As New PropertyAlb Private Read_record As New GestoreAlb Private AlbColl As New AlbCollection qui dichiaro le variabili che mi servono per aggiornare il dataset Private NRec As New GestoreDataset Private MyTable As DataTable Private MyRow As DataRow AlbColl = Read_record.CaricaRecAll(ObjAlb) For i As Integer = 0 To AlbColl.Count - 1 MyTable = NRec.NAlb MyRow = MyTable.NewRow MyRow("Codice") = AlbColl.Item(i).CodiceAlbergo MyRow("Nome") = AlbColl.Item(i).Descrizione MyRow("Comune") = AlbColl.Item(i).CittaAlb MyRow("CodComune") = AlbColl.Item(i).CodiceComune mytable.Rows.Add(myrow) Dim ds As DataSet = New DataSet ds.Tables.Add(mytable) Next i


classe nel quale creo i campi del dataset:

Public Class GestoreDataset 'Numero strutture gestiti Public Function NAlb() As DataTable Dim mytable As DataTable = New DataTable("NAlb") Dim mycolumn As DataColumn = New DataColumn mycolumn.DataType = System.Type.GetType("System.Int32") mycolumn.ColumnName = "Codice" mytable.Columns.Add(mycolumn) mycolumn = New DataColumn mycolumn.DataType = System.Type.GetType("System.String") mycolumn.ColumnName = "Nome" mytable.Columns.Add(mycolumn) mycolumn = New DataColumn mycolumn.DataType = System.Type.GetType("System.String") mycolumn.ColumnName = "Comune" mytable.Columns.Add(mycolumn) mycolumn = New DataColumn mycolumn.DataType = System.Type.GetType("System.Int32") mycolumn.ColumnName = "CodComune" mytable.Columns.Add(mycolumn) NAlb = mytable End Function End Class

è giusto la logica che ho utilizzato o meglio dire come ho scritto il codice per riempire il datset?

Ps ti allego anche il file Dataset.Xsd per farti vedere anche come l'ho costruito.

Ciao Fabio
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
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