PDA

View Full Version : سوال: خطای زمان اجرا دستور update اسکریپت اس کیو ال



Ebrahim_Rayaneh
دوشنبه 21 اسفند 1391, 02:42 صبح
قطعه کد زیر رو مشاهده کنید:

for (int i = 0; i < dgvComodity.Rows.Count; i++)
{
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+i.ToString()+
", NumShop='@NumShop'" + i.ToString() + ", PriceShop='@PriceShop'" + i.ToString() +
", DateShop='@DateShop'"+i.ToString()+" where IDS='@IDS'" + i.ToString();
Cmm.Parameters.AddWithValue("@CommoName" + i.ToString(), dgvComodity.Rows[i].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop" + i.ToString(), dgvComodity.Rows[i].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop" + i.ToString(), dgvComodity.Rows[i].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop" + i.ToString(), DT.Rows[i]["DateShop"]);
Cmm.Parameters.AddWithValue("@IDS" + i.ToString(), DT.Rows[i]["IDS"]);
Cmm.ExecuteNonQuery();
}

در کد فوق میخوام از محتوای دیتاگریدویو (dgvComodity)و دیتاتیبل (DT)که از قبل آماده کردم،استفاده کنم برای اجرا کردن یک دستور update ساده! دلیل استفاده از حلقه ی for اینه که ممکنه چندین سطر در دیتاگریدویو وجود داشته باشه اما برنامه خطای زیر رو میده:
Incorrect syntax near '0'.
اگرم حلقه for رو ور دارم به صورت زیر درمیاد:

Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+
", NumShop='@NumShop', PriceShop='@PriceShop'"+
", DateShop='@DateShop' where IDS='@IDS'";
Cmm.Parameters.AddWithValue("@CommoName", dgvComodity.Rows[0].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop", dgvComodity.Rows[0].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop", dgvComodity.Rows[0].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop", DT.Rows[0]["DateShop"]);
Cmm.Parameters.Add("@IDS", SqlDbType.Int).Value = (int)DT.Rows[0]["IDS"];
Cmm.ExecuteNonQuery();

اما در اینصورت هم این خطا رو میده:
Conversion failed when converting the varchar value '@IDS' to data type int.

اگه امکانش هست دلیل هر دو رو توضیح بدید ممنونتون میشم.البته در مورد دومی معلومه که به تبدیل نوع داره گیر میده اما با اینکه تبدیلش میکنم (int)DT.Rows[0]["IDS"] اشکال میگیره.

farzane_t
دوشنبه 21 اسفند 1391, 09:25 صبح
سلام
اینو امتحان کنید ببینید مشکل حل میشه

Cmm.Parameters.AddWithValue("@IDS", Convert.ToInt32(DT.Rows[0]["IDS"]));

Ebrahim_Rayaneh
دوشنبه 21 اسفند 1391, 13:22 عصر
سلام
اینو امتحان کنید ببینید مشکل حل میشه

Cmm.Parameters.AddWithValue("@IDS", Convert.ToInt32(DT.Rows[0]["IDS"]));

من اینو اول از همه امتحان کردم جواب نداد.

Nima_kyan
دوشنبه 21 اسفند 1391, 13:33 عصر
for (int i = 0; i < dgvComodity.Rows.Count; i++)
{
Cmm.CommandText = "update tbl_Stockroom set CommoName='@CommoName'"+i.ToString()+
", NumShop='@NumShop'" + i.ToString() + ", PriceShop='@PriceShop'" + i.ToString() +
", DateShop='@DateShop'"+i.ToString()+" where IDS='@IDS'" + i.ToString();
Cmm.Parameters.AddWithValue("@CommoName" + i.ToString(), dgvComodity.Rows[i].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop" + i.ToString(), dgvComodity.Rows[i].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop" + i.ToString(), dgvComodity.Rows[i].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop" + i.ToString(), DT.Rows[i]["DateShop"]);
Cmm.Parameters.AddWithValue("@IDS" + i.ToString(), DT.Rows[i]["IDS"]);
Cmm.ExecuteNonQuery();
}





به جای کد بالا این کد رو امتحان کنید. ' هارو اضافه گذاشتید.


for (int i = 0; i < dgvComodity.Rows.Count; i++)
{
Cmm.CommandText = "update tbl_Stockroom set CommoName=@CommoName"+i.ToString()+
", NumShop=@NumShop" + i.ToString() + ", PriceShop=@PriceShop" + i.ToString() +
", DateShop=@DateShop"+i.ToString()+" where IDS=@IDS" + i.ToString();
Cmm.Parameters.AddWithValue("@CommoName" + i.ToString(), dgvComodity.Rows[i].Cells["CommoName"].Value);
Cmm.Parameters.AddWithValue("@NumShop" + i.ToString(), dgvComodity.Rows[i].Cells["NumShop"].Value);
Cmm.Parameters.AddWithValue("@PriceShop" + i.ToString(), dgvComodity.Rows[i].Cells["PriceShop"].Value);
Cmm.Parameters.AddWithValue("@DateShop" + i.ToString(), DT.Rows[i]["DateShop"]);
Cmm.Parameters.AddWithValue("@IDS" + i.ToString(), DT.Rows[i]["IDS"]);
Cmm.ExecuteNonQuery();
}

Ebrahim_Rayaneh
دوشنبه 21 اسفند 1391, 17:23 عصر
ممنون دوست عزیز Nima_kyan ، اگه کسی بتونه در زمینه ی خطای Conversion failed منو راهنمایی کنه ممنونش میشم.