» »

C# postgresql - while zanka se drugič ne izvede

C# postgresql - while zanka se drugič ne izvede

urkrajnc ::

Pozdravljeni vsi skupaj.

Torej problem je sledeč. Izdelujem Windows aplikacijo v C#. Program, ki ga pišem, bo spletna redovalnica (maturitetni izdelek), ki bo dostopal do bazepodatkov (ocen, ...). Jaz se povežem z bazo, vse podatke prvič prečita pravilno, vendar ko drugič kličem Form1_Load se mi ena izmed while zank ne zažene več.
En del kode, ki "ne" deluje kot bi moralo:

private void Form1_Load(object sender, EventArgs e)
        {

                NpgsqlCommand ucenci = new NpgsqlCommand("SELECT priimek, ime FROM dijaki WHERE dijaki.id_razred = " + idRazred + ";", conn2);
                IDataReader ucenciRead = ucenci.ExecuteReader();
                try
                {
                    while (ucenciRead.Read())
                    {
                        priimekUcenci[j] = ucenciRead.GetString(ucenciRead.GetOrdinal("priimek"));
                        imeUcenci[j] = ucenciRead.GetString(ucenciRead.GetOrdinal("ime"));
                        toolStripComboBox1.Items.Add(priimekUcenci[j] + " " + imeUcenci[j]);
                        j++;
                    }
                    j = 0;                   
                }
                   
                catch (Exception msg)
                {
                    // something went wrong, and you wanna know why
                    MessageBox.Show(msg.ToString());
                }

tbImePriimek.Text = imeUcenci[stevec] + " " + priimekUcenci[stevec];

                NpgsqlCommand ID2 = new NpgsqlCommand("SELECT id_dijak FROM dijaki WHERE dijaki.priimek = '" + priimekUcenci[stevec] + "' and dijaki.ime='" + imeUcenci[stevec] + "' and dijaki.id_razred=" + idRazred + ";", conn2);
                int izpisID2 = (int)ID2.ExecuteScalar();
                tbStOsebniList.Text = Convert.ToString(izpisID2);

//OCENE ZA MATEMATIKO
                NpgsqlCommand matCommand = new NpgsqlCommand("SELECT ocena FROM matematika, dijaki WHERE matematika.id_dijak = dijaki.id_dijak and dijaki.id_dijak = '" + izpisID2 + "';", conn2);
                IDataReader matRead = matCommand.ExecuteReader();
                try
                {
                     while (matRead.Read())
                     {
                         matOcene[i] = matRead.GetString(matRead.GetOrdinal("ocena"));
                        textBox13.Text = matOcene[0];
                        textBox12.Text = matOcene[1];
                        textBox11.Text = matOcene[2];
                        textBox10.Text = matOcene[3];
                         i++;
                     }
                    i = 0;
                }

                catch (Exception msg)
                {
                    // something went wrong, and you wanna know why
                    MessageBox.Show(msg.ToString());
                }

and some other code.. So, when form is load for the first time, this code work perfect. Then I click button where happend this:

private void button1_click(object sender, EventArgs e)
        {
stevec = 2;
                Stran1_Load(sender, e);
       }


Ko se mi odpre Forma, se loada, in izpišejo se vse ocene, ki so pridobljene z baze. Ko kliknem na button, se mi števec poveča za 2 (izbere dijaka, ki je drugi v polju prečitanih imen) in forma se naloži še en krat.
Tale prvi while (ucenciRead.Read()) stavek se izvede pravilno, sepravi mi izpiše novega učenca, vendar vsak naslednji while stavek se ne izvede. Prečekiral sem z debuggerjem, šel korak za korakom, vendar ko pride do naslednje while zanke jo preprosto preskoči (ja pogoj ni pravi). Kako bi moral bit pogoj "nastavljen" nimam pojma. Zanimivo pa je, da sta spodni in zgorni del kode "enaka", samo imena "spremenljivk" in SELECT stavek imata drugi.
Torej če ima kdo kakšno zamisel, ali kar koli, le na dlan z odgovori.

Pomoč povezave postgres in c# (http://npgsql.projects.postgresql.org/d...

Hvala za pomoč!
Lp, Uroš

fiction ::

Jah, tezko reci po tem ko ne vidimo vsebine tabel. Ampak a je ta drugi ucenec sploh hodil na matematiko?
Zanka se ocitno ne izvede ker SELECT SQL stavek nicesar ne vrne. Ali pa pride ze pri ExecuteReader()
do kaksnega exceptiona, ki ga ti ne ujames.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Access 2007]

Oddelek: Programiranje
132609 (2209) urosz
»

VC# insert into oledb ne deluje

Oddelek: Programiranje
191606 (1377) Good Guy
»

razložitev nekaterij elementov v visual studio 05

Oddelek: Programiranje
72082 (1887) darkolord
»

problem v C#

Oddelek: Programiranje
211954 (1669) dvojka
»

branje byte[] iz MS access-ove baze

Oddelek: Programiranje
81896 (1806) BHawk

Več podobnih tem