Avatar billede jps6kb Novice
23. december 2009 - 11:52 Der er 7 kommentarer og
1 løsning

MySql fejl - meget mystisk

Hey,

Følgende kode:

foreach (int i in missing_products)
{
    string _sql = "SELECT varekategorier.name from products " +
      "INNER JOIN map_products_categories ON products.prod_id = map_products_categories.prod_id " +
      "INNER JOIN varekategorier ON map_products_categories.cat_id = varekategorier.Id " +
      "WHERE products.compid = " + compid + " AND products.prod_id = " + mdr.GetInt32(mdr.GetOrdinal("prod_id"));
    cmd = new MySqlCommand(_sql, conn);
    conn.Open();
    string name = cmd.ExecuteScalar().ToString();
    conn.Close();
    // Misc. business-logic here...
}


Fejl:

No current query in data reader
Line 216:            string _sql = "SELECT varekategorier.name from products " +

Det jeg ikke helt forstår er, at jeg ikke bruger en datareader i denne sekvens. Jeg bruger en inden, som jeg lukker på forsvarligvis:

mdr.Close();
        conn.Close();

        foreach (int i in missing_products)
        { // resten står foroven...

Nogen der har set det før, og har en løsning?
Avatar billede Slettet bruger
23. december 2009 - 12:01 #1
Hvilken type er mdr?
Hvis det er et recordset, skal du holde det åbent så længe, du benytter det (hvilket du gør i din foreach).

/1
Avatar billede jps6kb Novice
23. december 2009 - 12:05 #2
mdr er en MySqlDataReader.
Avatar billede jps6kb Novice
23. december 2009 - 12:10 #3
Givetvis 3. part komponent selvfølgelig, men fungerer i bund og grund som SqlDataReader.
Avatar billede Slettet bruger
23. december 2009 - 12:12 #4
Jeg vil stadig menu, du skal lade være med at close mdr.
Hvis det ikke virker, må du poste mere kode.

/1
Avatar billede jps6kb Novice
23. december 2009 - 12:33 #5
Freakin' **** Jamen jeg har jo ferie lige om lidt, så halvdelen af hjernen er begyndt at pakke sammen. :)

AND products.prod_id = " + mdr.GetInt32(mdr.GetOrdinal("prod_id"));


==

AND products.prod_id = " + i;

Damn it. Men det var jo mdr'en der var problemet. Heeh. Smider du et svar?
Avatar billede Slettet bruger
23. december 2009 - 13:23 #6
Yes.. Og god ferie til den anden hjernehalvdel.
Avatar billede jps6kb Novice
23. december 2009 - 13:26 #7
Takker :)
Avatar billede Syska Mester
26. december 2009 - 23:46 #8
btw ... brug parameters ... :-)

Der er flere fordele ... query optimizer, nemmere at læse koden, ingen sql injections. Men du har givetvis hørt det før, men kan ikek siges for tit :-)

mvh
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