Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Lettura record con datareader
giovedì 29 luglio 2004 - 15.52
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
fguida
Profilo
| Expert
524
messaggi | Data Invio:
gio 29 lug 2004 - 15:52
Ciao, ecco la mia richiesta: ho due solution distinte: in una ho una form, nell'altra la dll. Eseguo la lettura di una tabella di un db in questo modo:
public string Record() //legge il db
{
string str = "select * from Area";
SqlCommand myCommand = new SqlCommand(str, Conn);
SqlDataReader dr = myCommand.ExecuteReader();
string Mia = "";
while (dr.Read())
{
Mia = dr["NomeArea"].ToString();
//dr.NextResult();
}
return Mia;
}
******************************************************
A questo punto devo portarla in una combobox della form, dopo aver cliccato un bottone:
private void btnQuery_Click(object sender, System.EventArgs e)
{
cmbElenco.Text = conn.Record();
}
******************************************************
Come faccio a scorrere il datareader e popolare la combo?
Grazie mille
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 30 lug 2004 - 08:24
Non credo sia necessario scorrere il DataReader.
E' sufficiente usare un DataAdapter e un DataSet, riempirlo e poi usare questo codice:
combo.DataSource = ds;
combo.DisplayMember = "colonnadisplay";
combo.ValueMember = "colonnavalore";
Dove combo è il combobox, ds il DataSet, colonnadisplay la colonna del database in cui c'è il testo che vuoi rappresentare sulle varie voci del combobox e colonna valore invece il valore collegato.
ciao
david
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 10:01
Ottimo, proverò appena possibile; solo un'ulreriore domanda.. come mai mi sconsigli l'uso del datareader? ci sono dei problemi nel suo utilizzo o solo una questione di 'prestazioni'?
Grazie
Francesco
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 10:15
Inoltre.. per passare il risultato alla forma dalla .dll distaccata.. come faccio? MI sembra che con il return posso passare un solo valore....
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 30 lug 2004 - 11:02
Te lo sconsiglio perchè tu volevi fare ciclare il DataReader e non ha senso perchè perdi cicli di clock e tempo a scrivere istruzioni che non servono visto che c'è il DataBinding.
Da una funzione puoi ritornare qualsiasi cosa, tipi base come interi o stringhe, strutture, classi, quindi DataSet o altro.
ciao
david
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 11:10
Ottimo; passando il ds(dataset) come output nella return, devo fare il tostring.. altrimrenti mi da errore. Ma poi, passando dalla classe database della dll alla form . le proprietà del dataset restano invariate? A m non sembra dato che non lo riconosce....
F.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 30 lug 2004 - 14:18
>Ottimo; passando il ds(dataset) come output nella return, devo fare il tostring..
Perchè devi fare il ToString() scusa ?
E chiaro che se hai un prototipo di funzione del tipo:
public string NomeMetodo()
non puoi ritornare un DataSet e ti dirà di castarlo a String.
Prova con:
public DataSet NomeMetodo()
Si il DataSet è una struttura in memoria se lo passi ad una funzione all'interno di una classe o altrove mantiene le proprietà.
ciao
david
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 14:33
mmm..non vuol proprio funzionare.. non è che posso mandarti una mail con il codice da esaminare senza che ti scrivo qui 100 post?
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 16:39
Praticamente io ho creato due piccole solution; in una creo una dll che esegue iul settaggio,l'apertura e la chiusura della connessione, assieme alla creazione del data adapter e dataset.
Nell'altra ho la form, che richiama i metodi della classe creata nella dll. Vorrei quindi poter utilizzare il dataset della .dll nella form, e popolare così una combobox.
Grazie per l'aiuto che mi date... posso assicurarvi che ci sto 'grugnando' parecchio.
Francesco
fguida
Profilo
| Expert
524
messaggi | Data Invio:
ven 30 lug 2004 - 19:09
Si... lo so..il fatto è che nela form io ho creato una funzione, ma mi ritorna un solo parametro. David mi disse di poter portare tutto il dataset nella form, ma non riesco.. mi fa portre solo un return trasformato in .tostring() dalla dll alla form...
fguida
Profilo
| Expert
524
messaggi | Data Invio:
mar 3 ago 2004 - 17:13
Nulla da fare... certamente non rinuncio, ma non capisco prorpio come portare il dataSet in nela form!
F.
fguida
Profilo
| Expert
524
messaggi | Data Invio:
mar 3 ago 2004 - 17:49
E'... sta nel fatto che il ds non me lo fa ritornare come lo hai scritto tu... mi da errore...
public string Record() //legge il db
{
SqlConnection Conn = new SqlConnection("Data Source=suiteserver;Initial Catalog=Corsi;User Id=sa;Password=server");
Conn.Open();
string str = "select * from Area";
SqlDataAdapter da = new SqlDataAdapter(str, Conn);
DataSet ds = new DataSet();
da.Fill(ds,"Utente");
return ds;
Messaggio di errore: Cannot implicitly convert type 'System.Data.DataSet' to 'string'
Cosa mi suggerisci?
fguida
Profilo
| Expert
524
messaggi | Data Invio:
mer 4 ago 2004 - 09:32
Bene, un errore l'ho trovato, e riguarda questo; invece di scrivere:
public DataSet Record()
scrivevo
public string Record()
ed è logico ottenre un messaggio di errore...!!! Chiedo venia, ma Vi ringrazio per tanto l'aiuto
Francesco
Torna su
Stanze Forum
Elenco Threads
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 !