下面是我的SQL存储过程代码。请注意,它是一个购物网站。当我购买产品并在子总数上给予折扣(如2467 - 5%= 2345.65是返回值)然后我点击继续付款,我收到此错误:Error converting data type nvarchar to int
。
Line 211: int result = _com.ExecuteNonQuery();
这是我的代码:
create proc [dbo].[usp_ins_and_update_other_cart_details]
@Guestid varchar(max),
@DisAmount int,
@ShipAmount int,
@SubTotal int,
@GrandAmount int
as
begin
if not exists(select Guestid FROM DiscountAndShippingdetails WHERE Guestid =@Guestid)
begin
insert into DiscountAndShippingdetails
( Guestid, DisAmount, ShipAmount, SubTotal, GrandAmount )
values(@Guestid,@DisAmount,@ShipAmount,@SubTotal,@GrandAmount);
end
else
begin
update DiscountAndShippingdetails
set DisAmount = @DisAmount
, ShipAmount = @ShipAmount
, SubTotal = @SubTotal
, GrandAmount = @GrandAmount
where Guestid = @Guestid;
end
end
答案 0 :(得分:1)
主要错误只有一件事,您将数据类型声明为一个,并将您的数据发送为其他一些。请参阅已为所有列声明为int,但您要将值作为字符串发送。这是你斗争的主要原因。请按照以下行进行下一步
像这样更改你的声明,
int subtotal = Convert.ToInt32( Math.Round(Convert.Todouble(lblsubtotal.Text)));
int discount = Convert.ToInt32(Math.Round(Convert.Todouble(lbldiscount.Text)));
int shipping = Convert.ToInt32(Math.Round(Convert.Todouble(lblScharg.Text)));
int gradtotal =Convert.ToInt32( Math.Round(Convert.Todouble(lblGrandTotal.Text)));
int ret= insertOtherdetails(guiid, discount, shipping, subtotal, gradtotal);
if (ret != 0)
{
Response.Redirect("~/Checkout.aspx");
}
并将您的函数定义更改为,insertOtherdetails(string,int,int,int,int)
答案 1 :(得分:0)
首先,您需要检查您的字符串是否为空或为空 然后将其转换为整数。
如果要将nvarchar转换为c#asp.net中的整数,请使用以下命令:
convert.toint32(yourstringvalue);
如果你从sql查询执行此操作 按照这个:
CAST(yourvalue AS INT)
=============== 当你修改你的帖子。 首先检查你的存储过程返回int / string 然后写
int result = Convert.ToInt32(executequery());