[c#] dataset to variabili

martedì 10 marzo 2009 - 23.44

midigooo Profilo | Newbie

Ciao a tutti,

stò facendo delle prove in un winform con database (SQL server 2005), dataset, table adapter...riesco a gestire le query popolare e modificare il dataset. Non riesco a capire come prelevare i dati e poi riutilizzarli.

Ho scritto una query che mi popola un table adapter con dei valori, ma non riesco ad estrapolare i dati presenti e associarli a delle variabili.

Per esempio ho popolato table adapter con una sola riga che contiene 'nome' e 'cognome' e vorrei assegarli a due stringhe per modificarli e poi visualizzali su un form.

Riesco a farlo facendo una query diretta al database e utilizzano un datareader ma vorrei riuscirlo a fare in modalità disconnessa.

Grazie Mille

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao!

>stò facendo delle prove in un winform con database (SQL server
>2005), dataset, table adapter...riesco a gestire le query popolare
>e modificare il dataset. Non riesco a capire come prelevare i
>dati e poi riutilizzarli.
Personalmente mi sento di consigliarti di cambiare approccio, magari pensando ad un Data Layer e ad un Business Layer migliori, o fatti da te o usando ORM già presenti sul "mercato" (IBATIS - http://ibatis.apache.org/, NHibernate - http://www.hibernate.org/343.html, Microsoft Linq - http://msdn.microsoft.com/en-us/vbasic/aa904594.aspx)

>Riesco a farlo facendo una query diretta al database e utilizzano
>un datareader ma vorrei riuscirlo a fare in modalità disconnessa.
Potresti usare il metodo GetData() del tuo TableAdapter per ricavare il DataTable popolato coi dati dell'adattatore.
http://msdn.microsoft.com/it-it/library/ms233822(VS.80).aspx

>Grazie Mille
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

Jeremy Profilo | Guru

Ciao.
Senza nulla togliere a ciò che ti ha consigliato Alex.
Se quello che ti serve è avere delle textbox con il quale poter visualizzare/editare i dati presenti nel DataSet, ci sono diverse strade.
La più facile, forse, è la strada del DataBindings.
Qui trovi un esempio:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.databindings.aspx

Facci sapere....
Ciao

midigooo Profilo | Newbie

Grazie Per le risposte...

quello che vorrei fare è praticamente il "binding" su una variabile...cioè prendere il valore dal dataset e assegnarlo ad una variabile come una stringa e non visualizzarlo in una text box.

In questo modo posso usarlo in operazioni che non devono essere visualizzate o editarlo prima di visualizzarlo.

è un po che ci sono dietro ma non ho trovato nessun modo per farlo.

Jeremy Profilo | Guru

Ciao
Supponiamo che tu voglia prelevare il valore della prima riga nella colonna "Nome" della Tabella "Clienti" con il quale hai precedentemente popolato il DataSet.
dim Nome as string = TuoDataSet.Tables("Clienti").Rows(0).Item("Nome").ToString()
Questo è un'altro di quei tanti modi di cui ti parlavo.

Facci sapere....
Ciao.

midigooo Profilo | Newbie

Ciao,
il codice mi sembra essere proprio quello che mi serve, io uso c# e quindi ho utilizzato questo codice:

string nomeg = TuoDataSet.Tables("Clienti").Rows(0).Item("Nome").ToString();

però quando compilo ottengo questo errore:

Impossibile utilizzare il membro non richiamabile 'TuoDataSet.Tables' come metodo.

qualche idea?

Jeremy Profilo | Guru

Sarà perchè in c#(visto che tu scrivi in c#) devi usare le parentesi quadre????

string nomeg = TuoDataSet.Tables["Clienti"].Rows[0].Item["Nome"].ToString();

Facci sapere...
Ciao

midigooo Profilo | Newbie

Si ha ragione le parentesi davano errore

purtroppo c'è un altro problema, ottengo sempre un errore quando compilo perche la proprietà "Item" sembrebbe non esistere, ne ho una "ItemArray".

L'errore che mi da è:

'System.Data.DataRow' non contiene una definizione di 'Item' e non è stato trovato alcun metodo di estensione 'Item'che accetta un primo argomento di tipo 'System.Data.DataRow'. Probabilmente manca una direttiva using o un riferimento a un assembly.

Grazie ancora per l'aiuto

midigooo Profilo | Newbie

Ho risolto la sintassi corretta è questa:

string nomeg = TuoDataSet.Tables["Clienti"].Rows[0]["Nome"].ToString();

mi è sorto però un problema se ho un dataset con un pò di righe e non so a priori in quale è il dato che mi serve non riesco a prelevalo. secondo voi è possibile aggiungre una condizione del tipo Where id = ....

Jeremy Profilo | Guru

Ciao.

A questo punto credo che l'oggetto più consono al tuo scopo sia un BindingSource il quale ha una proprietà Filter con il quale puoi *selezionare* i record che corrispondo ad un criterio.

Ovviamente ci sarebbe l'opportunità di usare Linq che, a parer mio, sarebbe lo *strumento* più adatto in assoluto al tuo scopo.

Facci sapere...
Ciao

midigooo Profilo | Newbie

Ok ora mi documento un pò e poi vedo..

comunque già questa soluzione mi ha risolto dei problemi.

Grazie Ciao
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5