PDA

View Full Version : مشكل با كوتيشن در كد update



بیتافرهی
پنج شنبه 02 آبان 1387, 18:12 عصر
سلام
من با دكمه ي edit مشكل دارم. من توي فرمم يه text box دارم كه قراره توي اين text box كاربر توضيحاتي را در مورد كالاي مورد نظرش بنويسد.مشكلم از اينجا شروع ميشه كه اگر كاربر در اين text box ،از علائم خاصي مثل single cot (') استفاده كند ،چون توي كدم نيز از اين علامت استفاده شده موقع اجرا خطلا مي گيرد كه quotation را نبسته ايد.با توجه به اين مشكل براي رفع آن چه كدي بايد بنويسم؟آيا مي شود كد زير را طوري تغيير داد كه اين مشكل رفع شود؟(اين امكان بايد به كاربر داده شود كه از علامت ' استفاده كند)


SqlCommand com = new SqlCommand("update tblCheck_maintain_os_Fc6 set id_computer ='" + Convert.ToInt32(re_computer) +
"',operator_name='" + textBox1.Text + "',date='" + tarikh + "',update_untiv='" + checkBox1.Checked + "',scan_disk='" + checkBox2.Checked +
"',disk_defragment='" + checkBox3.Checked + "',disk_clean='" + checkBox4.Checked + "',check_virus='" + checkBox5.Checked +

"',inspector='" + textBox4.Text + "',comment='" + textBox5.Text +


" 'where id =" + temp, con);
con.Open();
result = com.ExecuteNonQuery();

رضا عربلو
پنج شنبه 02 آبان 1387, 19:46 عصر
کوئری تان را می نوانید به صورت یک Stored Procedure بنویسید و مقادیر کنترل هایتان را به عنوان پارا متر به ان پای کنید.
اینجوری هم امنیت کدتان بیستر ایت (sql injection) هم سرعت و ...

linux
پنج شنبه 02 آبان 1387, 23:05 عصر
از پارامتر ها هم می توانی استفاده کنی

بیتافرهی
جمعه 03 آبان 1387, 00:10 صبح
از پارامتر ها هم می توانی استفاده کنی

چه جوري؟
آحخ باز هم با روش شما سينگل كونيشن همچنان در كد وجود داد.
در ضمن ميشه كمك كنيد و بگيد چه جوري اينو با sp بنويسم؟

jaza_sa
جمعه 03 آبان 1387, 00:16 صبح
بهترین راه ، اصولی ترین راه ، و امن ترین راه همینیه که دوستان به اون اشاره کردن
ولی میتونید با تبدیل ' به '' هم اینکار رو بکنید

رضا عربلو
جمعه 03 آبان 1387, 00:59 صبح
یک استورد پروسیجر در اس کیو ال سرورتان درست کنید. تقریباً به این شکل


CREATE PROCEDURE [dbo].[UpdatetblCheck]
(
@id_computer INT,
....
)
AS
UPDATE tblCheck SET id_computer=@id_computer , ....


حالا


SqlCommand com = new SqlCommand();
com.CommandText = "UpdatetblCheck";
com.CommandType = CommandType.StoredProcedure;
con.Open();
result = com.ExecuteNonQuery();