PDA

View Full Version : سوال: کلا فه شدم - حذف کردن از یک Table



AliSadat
سه شنبه 24 مرداد 1391, 12:13 عصر
سلام
دوستان من تو این کد به پیغام خطا
No value given for one or more required parameters.
بر میخورم.
فکر نمیکنم حذف کردن یک رکورد از یک جدول اینقدر مشکل ایجادکنه .



oledb_con.Open();

OleDbCommand cmd_delete_item = new OleDbCommand();

cmd_delete_item.CommandText = "DELETE FROM tb_items WHERE items=" + txt_selectItem.Text;

cmd_delete_item.Connection = oledb_con;
cmd_delete_item.ExecuteReader();


MessageBox.Show(" آیتم مورد نظر حذف گردید ", "پیام", MessageBoxButtons.OK, MessageBoxIcon.Information);

oledb_con.Close();




ضمن اینکه من همین کد رو اینطوری نوشتم جواب داد یعنی رکورد پاک شد


cmd_delete_item.CommandText = "DELETE FROM tb_items WHERE id=2"



ولی همین رو به این شکل نوشتم باز همون پیغام خطا رو میده



cmd_delete_item.CommandText = "DELETE FROM tb_items WHERE items=ffffff"

hamidkh
سه شنبه 24 مرداد 1391, 12:25 عصر
سلام
از تابع
ExecuteNonQuery استفاده کنید و اگر هم فیلد items رشته است کدتون رو به صورت زیر اصلاح کنید


cmd_delete_item.CommandText = "DELETE FROM tb_items WHERE items='" + txt_selectItem.Text+"'";

hakim22
سه شنبه 24 مرداد 1391, 12:25 عصر
اول مطمئن شوید که txt_selectItem.Text خالی یا null نباشد
بعد به یاد داشته باشید در این فرمان شما یک عمل جستجو و شرط دارید. ممکنه هیچ رکوردی با مشخصاتی که شما به commandText داده اید یافت نشده باشد.
در این صورت چیزی برای پاک کردن وجود ندارد!

کار کردن با SQL به صورت فرمان های رشته ای کار سرسام آوری است و به شما پیشنهاد می کنم به یکی از دهها روش دیگر متوصل شوید این روش شما درضمن خودش یک حفره ی امنیتی است. و هر کسی می تواند با تیز هوشی فرمان های را درون txt_selectItem.Text جای دهد و چیزهای متفاوتی خروجی بگیرد ( فرض کنید درون txt_selectItem.Text کسی یک T-SQL کاملا جدید وارد کند . آنوقت شما مستقیمان آن را به درون CommandText میریزید و بعد Execute می کنید . چه کارها که نمیشود کرد !!!)

veniz2008
سه شنبه 24 مرداد 1391, 12:35 عصر
سلام. نکاتی رو که دوستمون در بالا گفتن رو حتما مد نظر داشته باشید. کدتون رو بصورت زیر بنویسید:

oledb_con.Open();

OleDbCommand cmd_delete_item = new OleDbCommand();

cmd_delete_item.CommandText = "DELETE FROM tb_items WHERE items=" + txt_selectItem.Text;

cmd_delete_item.Connection = oledb_con;
cmd_delete_item.ExecuteNonQuery()();


MessageBox.Show(" آیتم مورد نظر حذف گردید ", "پیام", MessageBoxButtons.OK, MessageBoxIcon.Information);

oledb_con.Close();

AliSadat
سه شنبه 24 مرداد 1391, 12:46 عصر
یسیار خوب
دست شما درد نکنه
مشکل از بی تجربگی بنده بود
باید مقادیر رشته ای رو در تک کتیشن میزاشتم
خدا بهتون خیر بده ! :لبخندساده:

AliSadat
سه شنبه 24 مرداد 1391, 12:49 عصر
جناب حکیم
ممنون از تذکر کاملا بجا و صحیحتون
ولی تکست باکس فقط برای آزمایش و یک متغیر موقت گرفتم که در صورت صحت کد عملیات اصلی رو روش انجام بدم .