Asp.Net The Parameterized Query Hatası Nasıl Çözülür?

notify (538) 7 yıl önce sordu

Asp.Net ile güncelleme işlemi yapmak istediğimde şöyle bir hata alıyorum;

"The parameterized query '(@title varchar(5),@aciklama varchar(9),@adsoyad varchar(8000),@' expects the parameter '@adsoyad', which was not supplied."

  • Neden böyle bir hata veriyor?
  • Böyle bir hata nasıl çözülür?

@alattin

Hata verilen alan şu kısım;

SqlDbType.Varchar alanını db de nvarchar olduğu için  SqlDbType.Nvarchar olarak değiştirdim ancak hata giderilemedi. -ki zaten aciklama bölümü de nvarchar olmasına rağmen varchar sorgusunda herhangi bir sıkıntı yaşamıyorum.

  public static void updateEvent(int id, String title, String aciklama,  String adsoyad, string etkinlikturu)
    {
        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand("UPDATE Kayitlar SET title=@title, Aciklama=@aciklama, AdSoyad=@adsoyad, EtkinlikTuru=@etkinlikturu WHERE event_id=@event_id", con);
        cmd.Parameters.Add("@title", SqlDbType.VarChar).Value = title;
        cmd.Parameters.Add("@aciklama", SqlDbType.VarChar).Value= aciklama;
        cmd.Parameters.Add("@adsoyad", SqlDbType.NVarChar).Value = adsoyad;
        cmd.Parameters.Add("@etkinlikturu", SqlDbType.VarChar).Value = etkinlikturu;
        cmd.Parameters.Add("@event_id", SqlDbType.Int).Value = id;

        using (con)
        {
            con.Open();
            cmd.ExecuteNonQuery();
        }
    }

 

Toplam 1 cevap


alattin (16999) 7 yıl önce cevapladı

The parameterized query.... which was not supplied hatası, SQL sorgusu içinde parametre tanımladığında fakat bu parametreye değer atamadığında ortaya çıkar

Örneğin 

select * from kullanicilar where ad=@adsoyad

şekline bir sorgun varsa sen bu sorguda @adsoyad bölümüne,@adsoyad  ifadesine parametre denir, değeri sonradan yollacağım diye söz veriyorsun. Buraya değeri şu şekilde yollaman gerekiyor

cmd.Parameters.AddWithValue("@adsoyad","uzmanim net");

veya şu şekilde

cmd.Parameters.Add("@adsoyad", SqlDbType.NVarChar).Value = "uzmanim net";

burada cmd nesnesi sqlcommand nesnesi.

Sonuç olarak tanımladığın parametreye değer yollamazsan The parameterized query.... which was not supplied hatası alırsın.

Düzenleme:

@notify updateEvent metodunun parametrelerinden adsoyad'a değer gelmiyor. Bu metodu kullanan kodlarını gözden geçir. 

notify 7 yıl önce

abi updateevent metodunu kullandığımız yer sadece EvenDAO.cs'de ve bunun içerisindeki 2 kısımda updatevent metodu var. Oların ikiside public static viodlerde biri updateEvent komutu diğeri de updateEventTime -ki updateEventTime ile hiçbir alakası yok. Yani tüm projede sadece bu iki kısım updateeventmetodu kullanıyorç

notify 7 yıl önce

Yine biyerde yanlış yapıyorum ama nerede?? :) gözlerim kapanıyo artık hatayı aramaktan abi :)

alattin 7 yıl önce

@notify bugün bakayım kodlarına

notify 7 yıl önce

@alattin abi valla süper olur