PDA

View Full Version : علت خطای Error converting data type nvarchar to int.



angel farahani
یک شنبه 28 اردیبهشت 1393, 01:48 صبح
با سلام ، من یک پروسجر و یک فرم جستجو دارم که از کد پروسجرم مطمئنم چون در اس کیو ال جواب میده ، اما در asp.net زمان اجرا خطای Error converting data type nvarchar to int. لطفا دوستان راهنمایی نمایید من یک پست های مشابه انجمن رو هم خوندم ، برام گره گشا نبود .


object getval(object s) {
if (s ==null)
return null;
else
return s;
}




protected void search_Click(object sender, EventArgs e)
{


Panel1.Visible = true;
DataSet ds = new DataSet();
String conString = ConfigurationManager.ConnectionStrings["OnlineResturansConnectionString"].ToString();
SqlConnection sqlcon = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand("SearchShops", sqlcon);
cmd.Connection.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@shopname",getval(name.Text.Trim()));
cmd.Parameters.AddWithValue("@shoptypeid",getval( ShopType.SelectedValue));
cmd.Parameters.AddWithValue("@areanum",getval( areanum.SelectedValue));
cmd.Parameters.AddWithValue("@economylevel",getval( echolevel.SelectedValue));
cmd.Parameters.AddWithValue("@parkingplace",getval( parkplace.SelectedValue));
cmd.Parameters.AddWithValue("@wifi",getval(wifi.Checked));
cmd.Parameters.AddWithValue("@freeship",getval(freeship.Checked));

cmd.ExecuteNonQuery();
sqlcon.Close();
sqlcon.Open();
sqlcon.Close();

}



}



پروسجرم :




ALTER PROCEDURE [dbo].[SearchShops]


@shopname varchar(30)=null,
@shoptypeid int=null,
@wifi bit=null,
@freeship bit=null,
@parkingplace tinyint=null,
@economylevel tinyint=null,
@areanum tinyint=null


AS
BEGIN


Select shopid,shoplogoname,shopname,shoptypeid,descriptio n,economylevel,areanum
From shop
Where(@shopname IS null OR shopname Like '%'+@shopname+'%')AND
(@shoptypeid IS null OR shoptypeid=@shoptypeid)AND
(@wifi IS null OR wifi=@wifi)AND
(@freeship IS null OR freeship=@freeship)AND
(@parkingplace IS null OR parkingplace=@parkingplace)AND
(@economylevel IS null OR economylevel=@economylevel)AND
(@areanum IS null OR areanum=@areanum)


END

Mag-Mag
یک شنبه 28 اردیبهشت 1393, 11:09 صبح
اشکال در پارمترهاتون هست
به ازای یک پارامتر که مقدارش int هست شما دارید یک مقدار nvarchar میفرستید.

angel farahani
یک شنبه 28 اردیبهشت 1393, 20:51 عصر
خوب من چطور اشکال رو رفع کنم ؟ منم خطا رو متوجه شدم ، نمی دونم چطور رفعش کنم ؟

angel farahani
یک شنبه 28 اردیبهشت 1393, 22:10 عصر
کانورت هم کردم ، اما حالا این خطا رو میده :

119201

Mag-Mag
دوشنبه 29 اردیبهشت 1393, 14:19 عصر
سلام
حوب ببین مقدار
ShopType.SelectedValue رو نمی تونی به int تبدیل کنی
3 حالت مهم که بیشتر احتمال داره
1- ShopType.SelectedValue مقدار null باشه
2- ShopType.SelectedValue مقدار برابر خالی باشه ، یعنی "" (هیچی)
3- مقدارش یک مقدار رشته ای هست.یعنی حروف هست به جای عدد