SqlDataReader Read non funziona

martedì 03 marzo 2009 - 11.58

patrizia84 Profilo | Junior Member

Ciao.
Devo leggere dal database tre record.
Utilizzo un oggetto SqlDataReader.
Non posso utilizzare un ciclo quindi devo scorrere il sqldatareader.
Utilizzo la funzione read() che mi passa al record successivo restituito.

Per le letture succesive utilizzo sempre Read ma non passa al record successivo.
Non è strano?Dovrebbe funzionare?
Potete aiutarmi?
Spero in un vostro aiuto sempre puntuale..
Grazie…

Wamba Profilo | Expert

>Ciao.
Ciao

>Devo leggere dal database tre record.
>Utilizzo un oggetto SqlDataReader.
fin qui ok

>Non posso utilizzare un ciclo quindi devo scorrere il sqldatareader. Utilizzo la funzione read() che mi passa al record successivo restituito.
>Per le letture succesive utilizzo sempre Read ma non passa al record successivo.
Sembrerebbe tutto ok perchè non posti un po' di codice?

Normalmente la sintassi è

EsecuzioneQuery
while(DR.Read())
{
//Operazioni sulla riga
}


-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

patrizia84 Profilo | Junior Member

Ciao...non posso utilizzare un ciclo perchè da codice deve impostare dei valori a degli hyperlink e dei label che cambiano id.
Posto un po di codice cosi' se vi può essere di aiuto..

SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["s"].ConnectionString);
string query = "SELECT r.id as i,r.descrizione as d,r.titolo as t,fotor.percorso as p FROM r,fotor where r.id=fotor.idr order by r.id desc";
SqlCommand cmd = new SqlCommand(query, cnn);
cmd.Connection.Open();
SqlDataReader reader = cmd.ExecuteReader();


//primo case studies
reader.Read();

Hyperlink1.Text= reader["t"].ToString();
string descrizione = reader["d"].ToString();
descrizione = descrizione.Substring(0, 120);
descrizione = descrizione + "...";
Label1.Text = descrizione;


if (reader["p"] != null)
{
string persorsoFoto = reader["p"].ToString();
fotoCaseStudies1.NavigateUrl = persorsoFoto;
imgCaseStudies.Src = "thumbPiccolo.ashx?id=" + persorsoFoto + "";
fotoCaseStudies1.Visible = true;
imgCaseStudies.Visible = true;


}
else
{
fotoCaseStudies1.Visible = false;
imgCaseStudies.Visible = false;

}

int idR= Convert.ToInt32(reader["i"].ToString());
more1.NavigateUrl="~/r/visualizzaR.aspx?IDR="+idR+"";



//secondo case studies
reader.Read();

Hyperlink3.Text = reader["t"].ToString();
string descrizione2 = reader["d"].ToString();
descrizione2 = descrizione2.Substring(0, 120);
descrizione2 = descrizione2 + "...";
Label2.Text = descrizione2;


if (reader["p"] != null)
{
string persorsoFoto1 = reader["p"].ToString();
fotoCaseStudies2.NavigateUrl = persorsoFoto1;
imgCaseStudies2.Src = "thumbPiccolo.ashx?id=" + persorsoFoto1 + "";
fotoCaseStudies2.Visible = true;
imgCaseStudies2.Visible = true;
}


else
{
fotoCaseStudies2.Visible = false;
imgCaseStudies2.Visible = false;
}

int id2 = Convert.ToInt32(reader["i"].ToString());

more2.NavigateUrl = "~/r/visualizzaR.aspx?IDR=" + id2 + "";


Grazie..

Wamba Profilo | Expert

Non è che semplicemente la query restituisce una sola riga?
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

patrizia84 Profilo | Junior Member

No..non credo..
Teoricamente è giusto quello che ho scritto?
Si utilizza il read...
Ora controllo la riga che restituisce..

Wamba Profilo | Expert

Giusto, forse. ortodosso non direi. Quando si ha a che fare con strutture ripetitibve si dovrebbero usare i repeater. La funzione read restituisce un booleano per verificare se ha fatto o meno la lettura di una nuova riga. Non controlli mai quel valore.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com

patrizia84 Profilo | Junior Member

Ho risolto.
Volevo record con codici diversi..
Ho aggiunto DISTINCT al select..Come ho fatto a non capirlo prima!!
Grazie lo stesso per i consigli..
A presto!

Wamba Profilo | Expert

Di nulla.
-----------------------------------------------------------
Solo chi ha il Caos dentro può generare una stella danzante
Wamba
http://blogs.ugidotnet.org/WamBlog/
http://www.intellimaker.com
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