Query Sql con c#

venerdì 13 febbraio 2009 - 15.38

$ilver Profilo | Junior Member

ciao a tutti,
ho questo problema con una query di sql, spero che qualcuno di voi mi possa aiutare.
Vi posto il codice:

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

Io vorrei che la variabile prova si riempisse ma niente da fare, non riesco a mettergli il valore del campo Lang della tabella ArticoliGiorno, come mai? dove sbaglio?

rossimarko Profilo | Guru

Ciao,

se usi il sqldatareader (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx) dopola executeReader devi richiamare il metodo read per leggere i dati.

Ti riporto l'esempio:
// Call Read before accessing data. while (reader.Read()) { Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1])); }
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Ma c'è un metodo più semplice senza usare il sqlreader?

Ps ho messo due volte il thread, uno bisogna cancellarlo posso farlo io?

rossimarko Profilo | Guru

Se devi caricare un solo valore allora puoi usare il metodo executescalar: http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqlcommand.executescalar.aspx che torna direttamente il valore.

Per il thread purtroppo tu non puoi cancellarlo, lo devono fare gli amministratori
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

Scusami RossiMark,
ho messo il codice che mi hai detto tu in questo modo

while (StringaLingua.Read()) { string prova = (String.Format("{0}", StringaLingua[0])); }

ma è sicuramente sbagliato, come devo fare per associargli il valore a prova?

rossimarko Profilo | Guru

perchè è sbagliato? puoi togliere lo string.format ma il concetto è giusto, dopo aver richiamato il metodo read vai a leggere il valore dal datareader

in alternativa puoi usare
string prova = StringaLingua.GetString(0)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

$ilver Profilo | Junior Member

mi da erroe perchè se metto la parola prova fuori dal ciclo while me la segna come rossa e nn posso assegnarla a niente.
Devo assegnarla per forza dentro al ciclo?

Mi sembra strano

while (StringaLingua.Read()) { prova =((string)StringaLingua["Lang"]); } TextBoxName_TextBoxWatermarkExtender.WatermarkText = prova;

Cosi mi da errore Boh

rossimarko Profilo | Guru

Ma tu otterrai un solo record dalla query? In quel caso utilizza l'executescalar.

string prova = (string) StringaLingua.ExecuteScalar();

Il datareader ha senso se carichi più colonne o più righe, e quindi fai un ciclo per ogni riga e all'interno del ciclo esegui le operazioni che ti interessano.

Per quanto riguarda la dichiarazione in un ciclo devi stare attento che le variabili dichiarate all'interno del ciclo non sono visibili da fuori, quindi nel caso in cui ti serva utilizzarle al di fuori dovrai dichiarare la variabile prima del suo utilizzo:
string prova = ""; while (StringaLingua.Read()) { prova = (string) StringaLingua[0]; }

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5