Avatar billede runberg Nybegynder
17. oktober 2002 - 12:02 Der er 7 kommentarer og
1 løsning

Udtræk af DataReader?????

Hejsa

Jeg har nu fået forbindelse til min database, men har lidt problemer med at få udtrækket de data jeg har hentet i databasen fra mit dataReader objekt.

Min kode ser indtil videre ud som følger:

...
objCommand = new SQLCommand(strSQL,objConn)
objConn.Open()
dataReader = objCommand.ExecuteReader()
objConn.Close()
...
(Variablerne er derfineret tidligere!!!!)

Mit spørgsmål er så nu, hvordan man på en nem måde får udtrukket dataene fra datareader objektet. Jeg har set mange vilde løsninger med databind og andet, men i mit tilfælde drejer det sig i denne omgang om et enkelt felt... Hvordan får jeg det ud???? Jeg vil helst bare have det ud som en String, da den er nemmest at arbejde med.

Hvad nu, hvis der er mange poster i mit udtræk?? Eks: Select navn, fornavn, telefon osv. Hvordan gør jeg så??? Og værre endnu, hvad nu hvis jeg slet ikke ved hvor mange rækker der er???? Select * ???

Jeg håber der er nogen der kan hjælpe!!

Pointene gives til den med flest kode eksempler, og det skal være letforståelige kodeeksempler. Altså: Keep It Simple!!!!

/Tak
Avatar billede askhoej Praktikant
17. oktober 2002 - 12:37 #1
string strSQL = "SELECT kolonne FROM tabel";

OleDbConnection con = new OleDbConnection(DBConnect);
con.Open();

OleDbCommand objCommand = new OleDbCommand(strSQL,con);

OleDbDataReader objDataReader;
objDataReader = objCommand.ExecuteReader();

if(objDataReader.Read())
{
string var = objDataReader["kolonne"].ToString();
}
       
objDataReader.Close();
con.Close();

/askhoej
Avatar billede runberg Nybegynder
17. oktober 2002 - 12:54 #2
Når jeg "sorterer" lidt i din kode, så er det essentille:

if(objDataReader.Read())
  dim var as string = objDataReader("kolonne").ToString()
end if

(oversat til VB :-) )

Til det har jeg dog lige et spørgsmål:
If-sætning. Hvad gør den helt nøjagtigt? Så vidt jeg kan læse mig til i dokumentationen, så skulle obj.DataReader.Read() bare flytte mig til den næste kolonne? Men den returnerer åbenbart også en boolean????
Avatar billede askhoej Praktikant
17. oktober 2002 - 13:02 #3
Ja den returnerer også en boolean (det står også i SDK'en ;-)).

Og ved if(objDataReader.Read()) undersøges der om der overhovedet er returneret en række. Hvis du vil køre gennem flere rækker skriver du while(objDataReader.Read()).

/askhoej
Avatar billede cms Nybegynder
17. oktober 2002 - 14:00 #4
runbjerg -> Den returnerer næste *række*, for at være præcis :o)
Avatar billede runberg Nybegynder
17. oktober 2002 - 14:21 #5
Okay....

Det vil altså sige, hvis jeg vil læse første række, så kan jeg bare gøre som du har beskrevet, med en if-sætning.

Skal jeg gennemløbe flere rækker, så er jeg nød til at lave et eller andet loop, som f.eks.:

while (objDataReader.Read()) do
' noget kode
next

Og på den måde vil jeg komme alle mine rækker igennem??
Avatar billede cms Nybegynder
17. oktober 2002 - 14:26 #6
yep
Avatar billede askhoej Praktikant
17. oktober 2002 - 14:28 #7
Det er korrekt :-)

/askhoej
Avatar billede runberg Nybegynder
17. oktober 2002 - 14:48 #8
Jamen så takker jeg mange gange!!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester