Problem z Insertem double do bazy danych z typem numeric

0

Mam Problem z Insertem double do Numeric(x,2) w bazie danych.
Additional information: Error converting data type varchar to numeric.

`string query = "insert into Cennik(Nazwa_Przedmiotu, Ilosc_Przedmiotu, Cena_Przedmiotu) values('"+nazwa+"', '"+ilosc+"', '"+cena+"')";`

`cena =Convert.ToDecimal(textBoxCena.Text);`

Po prostu wczytuje wartość z ',' podmieniam go na kropkę ale dalej musi to być typ zgodny z numeric.

Zapewne znajdziecie banalne rozwiązanie

0

Przede wszystkim to zapomnij o sklejaniu query jako stringa tak jak to robisz, a zainteresuj sie klasa SqlCommand, jej wlasciwoscia Parameters i klasa SqlParameter a twoje problemy z konwersja double do numeric rozwiaza sie same.

0
sqlcon.Open();
            SqlCommand cmd = new SqlCommand("Insert into Pracownik([Czy nasz],Imie_Pracownika,Nazwisko_Pracownika,[Stawka/h]) values (@czynasz,@imie,@nazwisko,@stawka)", sqlcon);
            cmd.Parameters.Add("@imie", SqlDbType.NVarChar, 20).Value = imie;
            cmd.Parameters.Add("@nazwisko", SqlDbType.VarChar, 25).Value = nazwisko;
            cmd.Parameters.Add("@czynasz", SqlDbType.Bit).Value = czyNasz;
            SqlParameter parstawkazah = new SqlParameter();
            parstawkazah.Value = stawkaZah;
            parstawkazah.ParameterName = "@stawka";
            parstawkazah.SqlDbType = SqlDbType.Decimal;
            parstawkazah.Size = (8);
            parstawkazah.Precision = 6;
            parstawkazah.Scale = 2;
            cmd.Parameters.Add(parstawkazah);
            cmd.ExecuteNonQuery();
            sqlcon.Close();

The parameterized query '(@imie nvarchar(20),@nazwisko varchar(25),@czynasz bit,@stawka d' expects the parameter '@imie', which was not supplied

Moim zdaniem dodałem parametr @imie. Może mnie ktoś naprowadzić ?

0

Idiota. Tyle w temacie. Dzięki za nakierowanie. Już działa wszystko.

1
  1. za nazwy kolumn Stawka/h i Czy nasz powinieneś po łapach dostać, najlepiej czymś ciężkim
  2. najczęstszą przyczyną tego komunikatu jest fakt, że wartość parametry znakowego jest pusta. Zobacz tak
if (String.IsNullOrEmpty(imie))
  cmd.Parameters.AddWithValue("@imie", DBNull.Value);
else
  cmd.Parameters.Add("@imie", SqlDbType.NVarChar, 20).Value = imie;

i tak samo dla nazwisko

1 użytkowników online, w tym zalogowanych: 0, gości: 1