首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

处理有关问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一

2013-03-27 
处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一在做.net版机房收费系统时,遇

处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一

在做.net版机房收费系统时,遇到这样一个问题:登陆系统时,在B层的登陆函数UserLogin_BLL()中调用了D层的两个函数—判断用户是否存在IsUserExist_DA(),验证密码是否正确CheckPassWord_DA()。在D层的这两个方法中的sql语句及设置参数分别是:

(1)

'sql语句  Dim sql As String = "SELECT COUNT(*) FROM T_UserInfo WHERE UserName=@UserName"  '设置参数Dim parameter As SqlParameter = New SqlParameter("@UserName", enUser.UserName)    


 

(2)

'sql语句 Dim sql As String = "SELECT UserName,PassWord FROM T_UserInfo WHERE UserName=@UserName AND PassWord=@PassWord" '设置参数  Dim parameters() As SqlParameter =           {                New SqlParameter("@UserName", enUser.UserName),                New SqlParameter("@PassWord", enUser.PassWord)           }


 


 

 (注意:两个sql语句中都有@UserName这个参数)

 

执行B层的UserLogin_BLL()函数时,就需要执行D层的IsUserExist()和CheckPassWord()两个函数,对吧!!

那么此时问题就出现了:报如下错:

 处理有关问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一

问题在于:

在多次执行SqlCommand的时候,第一次执行没有错..第二次就会出现变量名在批查询或存储过程内部必须唯一,

这是因为以前的参数还存在事务中。所以在执行第二次时,变量无法辨别,我们只需SqlCommand执行完毕后,添加如下语句即可:cmd.Parameters.Clear();就可以了,也就是在同一事务中若要多次执行带有相同参数名的SQL语句,必须在第一次执行后清理参数.

 

如下代码:(此代码是我的sqlhelper中的一个函数)

 处理有关问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一

1楼lfmilaoshi10小时前
文尾的总结,要有的
Re: hanxuemin123453小时前
回复lfmilaoshin嗯 ,晓得啦

热点排行