Avatar billede doomstone-dk- Nybegynder
26. november 2007 - 14:28 Der er 5 kommentarer og
1 løsning

chacing af sql data

Hejsa, jeg er ved at lave et lille program hvor jeg godt vil klar gøre dele af min sql data før jeg begynde at beregne på det, til det har jeg lavet formlen.

        private ArrayList ko = new ArrayList();

            using (SqlConnection cnn = new SqlConnection(cfg.getConnString())) {
              using (SqlCommand cmd = new SqlCommand(sql, cnn)) {
                  cnn.Open();
                using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) {
                  while (dr.Read()) {
                      ko.Add(dr);
                  }
                  dr.Close();
                }
              }
            }
            foreach (SqlDataReader data in ko)
            {
                MessageBox.Show(data["No_"].ToString());
            }

Men dette virke ikke helt, jeg får fejlen "Invalid attempt to call MetaData when reader is closed." på min MessageBox.Show, kan i fortælle mig hvad jeg skal gøre for at få det til at virke?
Avatar billede kalp Novice
26. november 2007 - 14:32 #1
læs din kode linje for linje så kan du jo se hvad der er galt:)

for det første lukker du dr.Close()
og for det andet så tror jeg det her er noget sludder ko.Add(dr);

så tænk lidt over de punkter:)
Avatar billede kalp Novice
26. november 2007 - 14:33 #2
ud fra din foreach så tror jeg du prøver at tilføje række i din arraylist.. og det er ikke hvad du gør i koden.. du tilføjer hele din datareader hver gang.
Avatar billede doomstone-dk- Nybegynder
26. november 2007 - 14:37 #3
Hmm jeg er rimelig ny i C# verden :D så har ikke helt styr på hvad jeg laver :D prøver mig sådan set frem :D Jeg vil bare gerne ligge min sql data ned i et array så jeg kan bruge det sender i min class uden at skulle oprette forbindelse til min sql server igen.
Derfor skal jeg jo finde en måde at hente data'en frem efter jeg har lukket min connection.

Jeg bruge ArrayList da det er det eneste array form jeg kender lige pt, hvor jeg ikke skal forfælle compileren hvor stor mit array blive på forhånd
Avatar billede kalp Novice
26. november 2007 - 14:52 #4
Der er mange fremgangsmåder.
Måske er den der er dig nærmest at du laver en klasse som repræsentere en række i din database.

og efterfølgende kan du rette følgende

while (dr.Read())
{
  ko.Add(dr);
}

til noget lignende:

while (dr.Read())
{
    Dinklasse raekke = new DinKlasse(dr["kolonne1"] as string,
                                    dr["kolonne2"] as DateTime,
                                    dr["kolonne3"] as int);
    ko.Add(raekke);
}



måske kan du se ideen i det... ps. ved ikke lige om eksperten formattere det  hele så det står dårligt:)
Avatar billede doomstone-dk- Nybegynder
27. november 2007 - 08:20 #5
kalp kan du ikke skrive noge som et svar? for det ser ud til at virke fint, takker
Avatar billede kalp Novice
27. november 2007 - 09:17 #6
selv tak:)
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