C# - MSSQL / Kreiranje nove teme

Pozdrav!

Kod kreiranja nove teme, ne sprema mi Id od teme u tablicu koja je namjenjena za komentare…
Kad se klikne na gumb/dugme/button prvo se sprema u tbl.Teme -> Kategorija_ID ( kategorija u koju pripada ta tema), ID korisnika ( koji je stvorio tu temu ), Naslov teme, zatvorena ( jel je tema zatvorena ili nije; defaultna vrijednsot: false) i datum i sa scope_identity() se dobiva ID te “novoNastale” teme koji spremam u tbl.Komentari zajedno s komentarom tj., opisom te “novoNastale” teme…

Sad, nije mi jasno zasto to ne radi, jer sam slican kod napisao kod stvaranja novog korisnika tj., registracije.
Dolje je kod + rezultat:
[attachment=1]slika1.jpg[/attachment]

[attachment=1]slika2.jpg[/attachment]

Hm… Ima li nesto sto moje oko ne vidi ili…?

Mda… Uber dobro se vidi -.-’… Ovo je kod:
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cm = new SqlCommand(“INSERT INTO Teme (Kategorija_ID, Otvorio_Korisnik_ID, Naslov, Zatvorena, Datum) " +
“VALUES (@Kategorija_ID, @Otvorio_Korisnik_ID, @Naslov, @Zatvorena, @Datum); SELECT SCOPE_IDENTITY();”, conn);
cm.Parameters.AddWithValue(”@Kategorija_ID", t.Kategorija_ID);
cm.Parameters.AddWithValue("@Otvorio_Korisnik_ID", t.Otvorio_Korisnik_ID);
cm.Parameters.AddWithValue("@Naslov", t.Naslov);
cm.Parameters.AddWithValue("@Zatvorena", t.Zatvorena); //false
cm.Parameters.AddWithValue("@Datum", t.Datum);

        [b]SqlCommand cm2[/b] = new SqlCommand("INSERT INTO Komentari (Tema_ID, Korisnik_ID, Datum, Text) " +
        "VALUES (@Tema_ID, @Korisnik_ID, @Datum, @Text)", conn);
        cm2.Parameters.AddWithValue("@Tema_ID", [b]t.Tema_ID[/b]);
        cm2.Parameters.AddWithValue("@Korisnik_ID", t.Otvorio_Korisnik_ID);
        cm2.Parameters.AddWithValue("@Datum", t.Datum);
        cm2.Parameters.AddWithValue("@Text", t.Text);
        try
        {
            conn.Open();

int novi_ID = Int32.Parse(cm.ExecuteScalar().ToString());
t.Tema_ID = novi_ID;
cm2.ExecuteNonQuery();

retVal = novi_ID;
}

I u bazi on mi sve spremi osim ID teme, njega jednostavno… ne povuce? :confused:

Mislim, mogu jednostavno ovu drugu sql naredbu (cm2) “izvrtit” u novoj metodi, ali glupo mi je 2x otvarat i zatvarat ‘konekciju’.

I jos jednom, glupo mi je sto imam slican KOD za registraciju korisnika i tamo radi a ovdje ne :confused:

uf koliko godina nisam pisao niti vidio SqlCommand … :wink:

ovaj t.Tema_ID = novi_ID;
zamjeni sa
cm2.Parameters.AddWithValue("@Tema_ID", novi_ID);
kojega izbrisi odozgora, gdje postavljas parametre.

Znaci, postavljanje Tema_ID parametra mora ici NAKON sto si izvrsio prvi upit i dobio nazad rezultat.

Tebi bude 0, jer je Tema_ID int, odnosno value (immutable) tip. Ti si prvo napravio kod koji bi teoretsi radio sa reference tipovima. Kada netko procita t.Tema_ID, on u biti napravi kopiju tog broja, i kada ti promjenis onaj “izvorni” t.Tema_ID, nisu promjenjene sve “kopije”, odnosno varijablje koje su procitale taj broj!

Sredio sam vec na jedan drugi nacin, ali tvoj je bolji tako da cu prepraviti. :slight_smile:

Zahvaljujem se.