PDA

View Full Version : سوال: ارور در کد کار با بانک اطلاعات



mehrdad85
دوشنبه 13 دی 1389, 11:42 صبح
سلام
دوستان من در برنامه خودم از کد زیر استفاده کردم که در یه زمان خاص یک session را با یه فیلد از جدول پایگاه مقدار دهی میکنم و در یه زمان دیگه میخوام با استفاده از یک کوئری سطرهایی از جدول را برگردونم که مقدار اون فیلدشون با session برابر باشه


int i = (int)Session["userID"];
SqlConnection scon = new SqlConnection(ConfigurationManager.ConnectionStrin gs["RegistrationConnectionString"].ToString());
SqlCommand status = new SqlCommand("UPDATE admin SET status=0 WHERE (userID='+i')", scon);
scon.Open();
status.ExecuteNonQuery();
scon.Close();

userID فیلدی از نوع int است


ممنون میشم کمکم کنید

javad.nic63
دوشنبه 13 دی 1389, 12:00 عصر
منظورتو واضح بگو. الان مشکلت چیه؟
فکر می کنم این تیکه کدت هم اشتباه
WHERE (userID='+i')"
باید اینطوری بنویسی
UPDATE admin SET status=0 WHERE userID="+i , scon

javad.nic63
دوشنبه 13 دی 1389, 12:03 عصر
Update admin SET status=0 WHERE userID="+convert.Tostring(i) , scon
در ضمن اگه فیلد status از نوع Int نیست مقدار صفر رو باید به شکل زیر بنویسی

status='0'

mehrdad85
دوشنبه 13 دی 1389, 15:54 عصر
ممنون
دوست عزیز میشه این کد را داخل sql command بنویسی؟
اخه به " و "" ارور میده


مرسی

mehrdad85
دوشنبه 13 دی 1389, 15:58 عصر
راستی دوست عزیز userId از نوع int هستش
چطوری اونا با string مقدار دادی؟

mehrdad85
دوشنبه 13 دی 1389, 16:17 عصر
واضح تر از این نمیتوتم عرض کنم که :
داخل شرط update میخام مقدار userID (که یک فیلد از جدول هست و از نوع int است ) را با یه مقدار دیگه از نوع int ( که همون session هست و من اونا cast کردم ) مقایسه کنم اما نمیدونم چرا ارور میده و

javad.nic63
دوشنبه 13 دی 1389, 16:28 عصر
اینطوری بنویس.


("UPDATE admin SET status=0 WHERE userID="+i.ToString() , scon)

javad.nic63
دوشنبه 13 دی 1389, 16:33 عصر
SqlCommand com=new SqlCommand("Update admin SET status=0 WHERE userID="+convert.Tostring(i), scon);

یا اینطوری بنویس بهتره چون جلو sql Injection هم گرفته میشه.


SqlCommand com=new SqlCommand("Update admin SET status=0 WHERE userID=@userid", scon);
com.Parameters.AddWithValue("@userid",i);
com.executeNoneQuery();

موفق باشی. امیدوارم مشکلت حل شده باشه.
برای این تبدیل به stringش کردم که ما باید یک تکست رو به دیتابیس بفرستیم و این که به string تبدیلش میکنیم باعث میشه که جزئی از text بشه.