Helloj! Vet inte om jag uppfattat din fråga rätt men jag gör ett försök. En annan sak, OM du använder en Reader så måste du göra en Reader.Read() först. Annars får du inga värden och detta orsakar felet du får. Hej okej!Hämta värde ur kolumn (med C#)
Har precis kickat igång med lite .NET knack men körde fast ganska snabbt. Jag kör en aspx sida och vill plocka ut värdet från ID kolumnen för att sedan använda denna på lite olika sätt när jag klikcat på en knapp... provade så här:
private void Button1_Click(object sender, System.EventArgs e)
{
string sistaId="SELECT TOP 1 *, lanID FROM ata_Lan ORDER BY lanID DESC";
SqlDataReader RS = objGlobal.getDataReader(sistaId);
string mesID =(RS.GetInt32(0)).ToString();
//här börjar den bråka och säger :"Invalid attempt to read when no data is present. "
Label1.Text=lanID;
}
DB-kopplingen ligger i en klass, och det är inga problem att få hela datasetet att skrivas ut i en DataGrid osv... men nu är det ju ett specifikt värde i en kolumn i DBn som jag vill använda som variabel.
Nån som har en ide om vad jag borde göra?Sv: Hämta värde ur kolumn (med C#)
Först och främst så måste anslutningen (connection) till db:n va öppen när du skall läsa från en SqlDataReader. Att använda sig av en reader är inte att föredra när ett värde skall hämtas. Vad du alltså bör göra i detta fall när du endast är ute efter ETT värde är att använda dig av ett SqlCommand objekt och metoden ExecuteScalar. Denna metod returnerar ett värde.
ex
<code>
SqlCommand cmd = new SqlCommand("SELECT TOP 1 *, lanID FROM ata_Lan ORDER BY lanID DESC",minconnection);
minnconnection.OPen();
mesId = Convert.ToString(commandObjekt.ExecuteScalar());
minconnection.Close();
</code>
Du bör alltså låta metoden objGlobal.GetDatareader returnera ett värde istället. Kanske ny metod som heter något vettigare för endamålet. Glöm inte felhantering när du jobbar mot en db.
//FreddeSv: Hämta värde ur kolumn (med C#)
Sv: Hämta värde ur kolumn (med C#)
Nu rullar det... tack för hjälpen!
string sistaId="SELECT traID FROM aTa_allLandTrans ORDER BY traID DESC ";
SqlDataReader rs = objGlobal.getDataReader(sistaId);
string st ="";
if(rs.Read())
{
st=(rs.GetValue(0).ToString());
}
rs.Close();
Skrev som ovan och fick det att funka, men ska prova med ExecuteScalar, kanske blir effektivare?