从云网和财付通中得到的提示
近期用到了云网和财付通的接口。
但是页面post给他们之后,返回来的数据却不止一条,就是返回页面要被请求至少两次,立刻电话给tenpay和云网,但是他们那边的数据也只是显示回传了一次。这就让我偶不得其所了,检查了N次代码没有发现明显的错误。但是肯定是流程出了问题,否则不可能出现这样的情况,于是乎仔细查找,终于在当云网或者财付通返回订单的时候,我要查询存放订单的库,看看此订单是否存在。然后进行支付成功之后的操作,比如将用户的金额入库等等,这个检索的时候出现了问题,在此提示大家,使用sqldatareader的时候最好是这样:
千万记得在if后再关闭dr
另外using(dr)这样的操作还是最好少用,因为他翻译成il代码后是一个try catch的操作,可能你的一个页面同时要开十次数据库,你若是等待他去给你fanilly的时候关闭dr就已经太晚了,因为数据库资源已经被他耗尽了!所以还是手动关闭的比较好!
但是页面post给他们之后,返回来的数据却不止一条,就是返回页面要被请求至少两次,立刻电话给tenpay和云网,但是他们那边的数据也只是显示回传了一次。这就让我偶不得其所了,检查了N次代码没有发现明显的错误。但是肯定是流程出了问题,否则不可能出现这样的情况,于是乎仔细查找,终于在当云网或者财付通返回订单的时候,我要查询存放订单的库,看看此订单是否存在。然后进行支付成功之后的操作,比如将用户的金额入库等等,这个检索的时候出现了问题,在此提示大家,使用sqldatareader的时候最好是这样:
SqlDataReader dr = **.getDR();
if(dr.HasRows)
{
while(dr.read())
}
dr.close();
if(dr.HasRows)
{
while(dr.read())
}
dr.close();
千万记得在if后再关闭dr
另外using(dr)这样的操作还是最好少用,因为他翻译成il代码后是一个try catch的操作,可能你的一个页面同时要开十次数据库,你若是等待他去给你fanilly的时候关闭dr就已经太晚了,因为数据库资源已经被他耗尽了!所以还是手动关闭的比较好!