Forum
Merhabalar,
Veritabanındaki kayıtlardan seçilen malzemelerin, seçilen alanlarındaki bilgileri toplu olarak güncelleyen bir sayfa tasarlıyorum. Örneğin 123,456,789 numaralı malzemelerin renk alanlarını siyah olarak güncellemek ve güncelleme işlemi tamamlandıktan sonra view da malzeme numaralarıyla, durumun görünmesini istiyorum. Bunun için controller da aşağıdaki kodları yazdım fakat System.Data.SqlClient.SqlException: 'Incorrect syntax near '='.' hatası alıyorum.
[HttpPost]
public ActionResult TopluVeriGuncelle(string alan, string bilgi, string mkodlari)
{
var durum = new List();
char[] split = { '\n', '\r' };
var mkod = mkodlari.Split(split, StringSplitOptions.RemoveEmptyEntries);
foreach (string malzemekod in mkod)
{
string sql = $"UPDATE tblMalzeme SET {alan}='{bilgi}' WHERE MALZEMEKODU=@malzemekod";
using(var db2=new dbMalzemeEntities7())
{
int s = db2.Database.ExecuteSqlCommand(sql, new SqlParameter("@malzemekod", malzemekod));
durum.Add(new MalzemeDurum { Malzeme = malzemekod, Durum = s });
}
}
return View(durum);
}
Hatayı aldığım satır : int s = db2.Database.ExecuteSqlCommand(sql, new SqlParameter("@malzemekod", malzemekod));
Yardımcı olur musunuz?
Şimdiden teşekkürler...
Bu işlemi çalıştırdığında profiler dan SQL Server'a hangi sorgunun gittiğine görebilir misin? Bir tırnak, virgül hatası gibi birşey var sanırım ama ürün koduna göre karşımıza çıkan bir hata gibi. Yani çalışan sorguyu görmemiz gerekiyor.
Management studio dan tools>sql profiler
Connect ve start diyerek çalıştırabilirsin. Sorgu görünecek şekilde ekran görüntüsü atarsan yorumlayalım.
Alternatif olarak kodunuzu yeniden düzenleyip SQL'e göndermeden oluşan komutları text dosyaya yazdırıp inceleyin. mkodlari değişkeninizde uyumsuz veri oluşuyor olabilir. Dizi kullanıp diziye veriyi kontrollü aktarırsanız süreci daha doğru yönetebilirsiniz. Sınıf kullanmak daha doğru bir tercih olacaktır.
İyi çalışmalar.
@omercolakoglu , @SerkanAtes ilginiz için teşekkür ederim. Ben sorunu çözdüm. View kısmından ilgili parametreleri alamadığımdan null değer geldiği için hata veriyormuş. Çok basit bir gözden kaçırmadan kaynaklanıyormuş hata..
Geri bildirim için teşekkürler.
****************************************************************
Probleminiz çözüldüğünde sonucu burada paylaşırsanız,
sizin ile aynı problemi yaşayanlar için yardım etmiş olursunuz.
Eğer sorununuz çözüldü ise "çözüldü" olarak işaretlerseniz
diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************