Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]

[es] :: .NET :: ASP.NET :: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]

[ Pregleda: 574 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 409
*.adsl-4.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]21.02.2008. u 21:05

Pozdrav uvaženi članovi ES foruma.

Pravim ASP.NET aplikaciju. Naišao sam već dva puta na jedan čudan problem, pokušaću da ga izložim što jednostavnije.

Postoji GridView, textbox i dugme. Klikom na dugme se u tabelu( čije redove prikazuje GridView) doda novi red sa vrednošću koja je bila u textbox-u. Zatim, pozovem this.DataBind();
Dakle, pokušavam da dodam novi red i prikažem novododati red u GridView-u. Ovo, naravno, ne funkcioniše kako treba( neće biti prikazan i novi red).

Pokušao sam da problem rešim tako što ću staviti Thread.Sleep( 1000) pre this.DataBind() i - rešio problem. Ali, zašto je ovo pomoglo? Zar se operacija this.DataBind() neće izvršiti tek pošto bude završeno izvršavanje INSERT komande?

Imam VS 2008.
21.02.2008. u 21:05 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2411
195.252.78.*

Sajt: blog.mitrovic.rs


Profil

icon Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]22.02.2008. u 17:32
Zvuci sasavo. Daj kod za taj event handler za button click.

▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
22.02.2008. u 17:32 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 409
*.adsl-4.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]22.02.2008. u 20:06
Da... Evo ga kod:
Code:

    protected void btnDodajFrazu_Click(object sender, EventArgs e)
    {
        Korisnik k = new Korisnik(this);
        string sqlInsert = "INSERT INTO Fraze( KorisnikId, TextFraze) VALUES(" +
            k.Id.ToString() + ",'" + txtNovaFraza.Text.ToLower() + "')";
        BazaPodataka.IzvrsiNaredbu(sqlInsert); //komentar 1
        System.Threading.Thread.Sleep(1000);
        lblMsg.Text = "Nova fraza \"" + txtNovaFraza.Text.ToLower() + "\" je uspešno dodata."; 
        this.DataBind();
    }


#komentar 1:
BazaPodataka je klasa, a static funkcija IzvrsiNaredbu napravi OleDbCommand od proslednjenog string, konektuje se na bazu, izvrši upit i zatvori konekciju. Baza je Access( iliti Jet, jelte...).

Ako izostavim sleep() f-ju, novododati red se ne prikazuje, a poruka u lblMsg se uredno prikaže. Probao sam da izbacim sleep(), i na njegovo mesto postavim breakpoint i pokrenem debug. I radi lepo, jer kad dođe do breakpointa izvršavanje se zaustavi dok ga ja ne nastavim...
22.02.2008. u 20:06 

mmix
Miljan Mitrovic
Software Architect
Pancevo, Srbija

SuperModerator
Član broj: 17944
Poruke: 2411
195.252.78.*

Sajt: blog.mitrovic.rs


Profil

icon Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]22.02.2008. u 20:36
Citat:
toxi_programer: BazaPodataka je klasa, a static funkcija IzvrsiNaredbu napravi OleDbCommand od proslednjenog string, konektuje se na bazu, izvrši upit i zatvori konekciju. Baza je Access( iliti Jet, jelte...).


Ok, pozitivan pomak, greska (ako se tako moze) nazvati je u raskoraku izmedj insert komande i selecta koji radis u DataBind() (pretpostavljam da ga tu radis), iz nekog razloga command se izvrsio ali red jos nije commited u access bazu, shodno tome select je ne vidi, kad mu das sleep ti u stvari ne modifikujes .NET sekvencu izvrsavanja (oledbcommand je vec odradio svoje), jednostavno dajes fore access-u da smesti red u tabelu. Medjutim to je generalno lose, a uzrok je verovatno u konfiguraciji connection i command objekta.
Ajd sad daj samo taj kod za IzvrsiNaredbu metod i koji ti je connection string, negde tu se krije uzrok ovom ponasanju.
▪ The quicker a phone is answered in sales, the slower it's answered in customer services - Brownridge's Law
▪ Democracy is a device that ensures we shall be governed no better than we deserve - George Bernard Shaw
▪ To err is human--and to blame it on a computer is even more so - Robert Orben
22.02.2008. u 20:36 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 409
*.adsl-4.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]22.02.2008. u 20:40
Aha, evo i ga i kod koji radi sa bazom:

Code:

...
    private static OleDbConnection KonektujSe()
    {
        OleDbConnection oleConn = new OleDbConnection();

        string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + lokacijaBaze +
            ";Jet OLEDB:Database Password='" + sifra + "'";
        oleConn.ConnectionString = strCon;

        oleConn.Open();
        return oleConn;
    }

    public static int IzvrsiNaredbu(string sqlNaredba)
    {
        OleDbCommand oleCmd = new OleDbCommand(sqlNaredba);
        return IzvrsiNaredbu(oleCmd);
    }

    public static int IzvrsiNaredbu(OleDbCommand sqlNaredba)
    {
        sqlNaredba.Connection = KonektujSe();
        int ret = sqlNaredba.ExecuteNonQuery();
        sqlNaredba.Connection.Close();  
        return ret;
    }

...
22.02.2008. u 20:40 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 409
*.adsl-4.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]22.02.2008. u 20:48
Biće da sam ja lud.

Nisam bio zatvorio konekciju, a evo sada sam ispravio kod i izgleda da radi kako treba. Ali nisam još probao kako treba...
22.02.2008. u 20:48 

[es] :: .NET :: ASP.NET :: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a]

[ Pregleda: 574 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.