[ AMD guy @ 02.05.2009. 15:19 ] @
Zasto mi ovaj kod daje dupli upis u bazu?
Code:
private void btnSnimi_Click(object sender, EventArgs e)
        {
            NapraviNovi();
            Close();
        }

        public void NapraviNovi()
        {    
            //Kreiranje SqlConnection objekta za povezivanje sa bazom
            SqlConnection conn = new SqlConnection(Properties.Settings.Default.RentCarConnStr);
            
            //Uspostavljanje veze sa bazom
            conn.Open();

            //Kreiranje insert stringa za upis novog vozila u tabelu
            string InserString = "INSERT INTO Vozilo(Marka,Boja,Godiste,Registracija) VALUES (@Marka, @Boja, @Godiste, @Registracija)";

            //Kreiranje SqlCommand objekta za cuvanje izraza SELECT
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = InserString;

            
            cmd.Parameters.Add("@Marka", SqlDbType.NVarChar, 20);
            cmd.Parameters.Add("@Boja", SqlDbType.NVarChar, 20);
            cmd.Parameters.Add("@Godiste", SqlDbType.Int, 4);
            cmd.Parameters.Add("@Registracija", SqlDbType.NVarChar, 20);

            cmd.Parameters["@Marka"].Value = txtMarka.Text;
            cmd.Parameters["@Boja"].Value = cmbBoja.Text;
            cmd.Parameters["@Godiste"].Value = numericUpDownGod.Value.ToString();
            cmd.Parameters["@Registracija"].Value = txtRegBroj.Text;

            //Kreiranje SqlAdapter objekta
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            //kreiranje dataset objekta
            DataSet ds = new DataSet();

            //Pozivanje metode Fill() objekta SqlDataAdaptera za preuzimanje redova iz tabele
            string DataTableName = "Vozilo";
            da.Fill(ds, DataTableName);

            //Uzimanje objekata Datatable iz objekta DataSet
            DataTable myDataTable = ds.Tables[DataTableName];

            cmd.ExecuteNonQuery();
            conn.Close();
            MessageBox.Show("Novo vozilo uspesno kreirano");
            Close();

        }



ID_Vozila je Identitiy increment i primary key. Koristim VS 2008 i SQL Express 2008.
[ markomys @ 02.05.2009. 16:40 ] @
Napravi novu SqlCommand sa select upitom za fill i nju stavi da ti bude adapterova SelectCommand.
I prvo pozovi ExecuteNonQuery pa onda fill da ti pokupi promene.
[ Igor Gajic @ 02.05.2009. 18:39 ] @
Nije bug u C#

Code:


...

da.Fill(ds, DataTableName);  // izvrsava 1. INSERT (tako si podesio, umesto SELECT komande prosledio si INSERT)

...

cmd.ExecuteNonQuery(); //izvrsava 2. INSERT

[ AMD guy @ 03.05.2009. 10:43 ] @
Da sada vidim dva puta sa izvrsio INSERT, izbacio sam cmd.ExecuteNonQuery(); i sada upisuje samo jednom. Stvarno glupa greska
Svaki put nesto novo naucim hehe
Pozdrav