Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP.NET C#] OleDB query uitvoeren 2e keer mislukt?

Pagina: 1
Acties:

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Als we het volgende stukje coden uitvoeren dan krijgen we bij de 2e query een exception met de volgende melding: "Waarden voor een of meer vereiste parameters ontbreken."

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        if (Session["id"] != null)
        {
            string sSQLGetPerson = "SELECT * FROM people WHERE id = @id";
            OleDbCommand rSQLGetPerson = new OleDbCommand(sSQLGetPerson, rDatabaseConnection);
            rSQLGetPerson.Parameters.AddWithValue("@id", Session["id"]);
            OleDbDataReader x = rSQLGetPerson.ExecuteReader();
            if (!x.HasRows)
            {
                Session["id"] = null;
            }
            else
            {
                x.Read();
                // Lees hier wat uit
                x.Close();
                
                string sSQLGetStudent = "SELECT * FROM students WHERE students_peopleid = @id";
                OleDbCommand rSQLGetStudent = new OleDbCommand(sSQLGetStudent, rDatabaseConnection);
                rSQLGetStudent.Parameters.AddWithValue("@id", Session["id"]);
                OleDbDataReader oSQLGetStudent = rSQLGetStudent.ExecuteReader();
                if (oSQLGetStudent.HasRows)
                {
                    Hashtable hStudent = new Hashtable();
                    oSQLGetStudent.Read();
                    for (int i = 0; i < oSQLGetStudent.FieldCount; i++)
                    {
                        hStudent.Add(oSQLGetStudent.GetName(i).Substring("students_".Length), oSQLGetStudent[i]);
                    }
                    oSQLGetStudent.Close();
                    aUserInfo.Add("_student", hStudent);
                }
            }
        }


Het rare is dus dat we in de eerste query precies dezelfde parameters gebruiken als in de tweede query. Waarom gaat het dan fout? We hebben al vanalles geprobeerd met verschillende soorten van parameters toevoegen, verschillende manieren om de parameters een naam te geven, etc. Maar we blijven dezelfde foutmelding krijgen.

[ Voor 9% gewijzigd door Tanuki op 21-11-2007 13:40 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:23

gorgi_19

Kruimeltjes zijn weer op :9

Al een breakpoint gezet en gekeken of Session['id'] echt niet null is bij de 2e query? Gekeken met profiler wat er binnen komt?

[ Voor 19% gewijzigd door gorgi_19 op 21-11-2007 12:02 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
gorgi_19 schreef op woensdag 21 november 2007 @ 12:02:
Al een breakpoint gezet en gekeken of Session['id'] echt niet null is bij de 2e query? Gekeken met profiler wat er binnen komt?
Heb ik ook gedaan, er staat gewoon 1 in (ID van een user in de database, die bestaat dus ook gewoon).

Toch bedankt. :*

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Probeer het eens zo:

C#:
1
2
3
OleDbCommand rSQLGetStudent = new OleDbCommand(sSQLGetStudent, rDatabaseConnection);
rSQLGetStudent.Parameters.Add("@id", SqlDbType.Int32); 
rSQLGetStudent.Parameters["@id"].Value = (int)Session["id"];

[ Voor 1% gewijzigd door Face_-_LeSS op 21-11-2007 12:34 . Reden: Klein foutje ]


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Probeer eens twee verschillende database connecties te gebruiken voor de twee command objecten. De connectie is namelijk nog in gebruik door de eerste reader, en kun je hem dus niet voor de twee command gebruiken.

Waarom je 'x' aanhoud begrijp ik niet helemaal, omdat behalve voor een controle of er records zijn terug gekomen hij verder niet meer wordt gebruikt..

C#:
1
2
3
4
5
6
7
8
9
10
OleDbDataReader x = rSQLGetPerson.ExecuteReader(); 
bool hasRows = x.HasRows;
x.Close();

if (!x)
   Session["id"] = null; 
else
{
  //nu kun je hier de tweede command uitvoeren met dezelfde database connectie
}

If it isn't broken, fix it until it is..


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je mag toch maar 1 open datareader op een connection hebben?
edit:
Grom naar hierboven... mij een beetje spuit 11 maken ;)

[ Voor 36% gewijzigd door bigbeng op 21-11-2007 13:36 ]


  • Walance
  • Registratie: September 2005
  • Laatst online: 24-11 21:48

Walance

Hm.. wat zal ik hier schrijven

Dat hadden we ook al geprobeerd, daar krijgen we precies dezelfde foutmelding bij. We hadden ook iets gevonden via google dat je alleen een vraagteken moest doen, ipv de @id, en dan een parameters.add, maar dat werkt ook al niet.

//edit @de 2 posts hierboven, we hadden teveel code eruit geknipt, maar de hebben geen 2 open verbindingen tegelijkertijd, die sluiten we wel netjes voordat we een nieuwe verbinding maken :+

[ Voor 30% gewijzigd door Walance op 21-11-2007 13:40 ]


  • Tanuki
  • Registratie: Januari 2005
  • Niet online
Sorry, die x.Close() stond er wel. Er stond nog wat andere (niet relevante) code tussen en die heb ik weggehaald voor de post, inclusief die x.Close()... Even editten.

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


  • Gadgets
  • Registratie: Juni 2006
  • Laatst online: 15:23
Zet in je connectionstring:

MultipleActiveResultSets=yes;

[ Voor 29% gewijzigd door Gadgets op 21-11-2007 13:41 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik zie net dat de foutmelding dan anders is, dus dat was een beetje dom :)

Wat voor database gebruik je? De eerste hit met jouw foutmelding op google gaf aan dat de fout kan optreden als je een verkeerde veldnaam opgeeft bij Access. Kan het zijn dat je een tikfoutje in je veldnaam hebt zitten? Is het niet bv students_people_id?

  • Walance
  • Registratie: September 2005
  • Laatst online: 24-11 21:48

Walance

Hm.. wat zal ik hier schrijven

We gebruiken inderdaad access en dit eens gecontroleerd, we hadden inderdaad een tikfoutje in de veldnamen zitten, moest student_peopleid zijn i.p.v. students_peopleid.

Dat ie dat dan niet gewoon zegt in de foutmelding... |:(

Maar het werkt nu dus, hartstikke bedankt :*)
Pagina: 1