Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

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

  • 5 odgovora
  • 2.997 pregleda

Najnovija ↓

Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a] 21.02.2008. u 22:05 · pre 227 meseci #1
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.
Potpis
Expert Opinions - Niche Articles
Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a] 22.02.2008. u 18:32 · pre 227 meseci #2
Zvuci sasavo. Daj kod za taj event handler za button click.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a] 22.02.2008. u 21:06 · pre 227 meseci #3
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...
Potpis
Expert Opinions - Niche Articles
Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a] 22.02.2008. u 21:36 · pre 227 meseci #4
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.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Jel sam ja lud ili... [ASP.NET i korišćenje sleep-a] 22.02.2008. u 21:40 · pre 227 meseci #5
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;
    }

...
Potpis
Expert Opinions - Niche Articles
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme