处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一
2015-11-02 22:23
288 查看
在做.net版机房收费系统时,遇到这样一个问题:登陆系统时,在B层的登陆函数UserLogin_BLL()中调用了D层的两个函数—判断用户是否存在IsUserExist_DA(),验证密码是否正确CheckPassWord_DA()。在D层的这两个方法中的sql语句及设置参数分别是:
(1)
[vb] view
plaincopy
'sql语句
Dim sql As String = "SELECT COUNT(*) FROM T_UserInfo WHERE UserName=@UserName"
'设置参数
Dim parameter As SqlParameter = New SqlParameter("@UserName", enUser.UserName)
(2)
[vb] view
plaincopy
'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()两个函数,对吧!!
那么此时问题就出现了:报如下错:
问题在于:
在多次执行SqlCommand的时候,第一次执行没有错..第二次就会出现变量名在批查询或存储过程内部必须唯一,
这是因为以前的参数还存在事务中。所以在执行第二次时,变量无法辨别,我们只需SqlCommand执行完毕后,添加如下语句即可:cmd.Parameters.Clear();就可以了,也就是在同一事务中若要多次执行带有相同参数名的SQL语句,必须在第一次执行后清理参数.
如下代码:(此代码是我的sqlhelper中的一个函数)
版权声明:本文为博主原创文章,未经博主允许不得转
(1)
[vb] view
plaincopy
'sql语句
Dim sql As String = "SELECT COUNT(*) FROM T_UserInfo WHERE UserName=@UserName"
'设置参数
Dim parameter As SqlParameter = New SqlParameter("@UserName", enUser.UserName)
(2)
[vb] view
plaincopy
'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()两个函数,对吧!!
那么此时问题就出现了:报如下错:
问题在于:
在多次执行SqlCommand的时候,第一次执行没有错..第二次就会出现变量名在批查询或存储过程内部必须唯一,
这是因为以前的参数还存在事务中。所以在执行第二次时,变量无法辨别,我们只需SqlCommand执行完毕后,添加如下语句即可:cmd.Parameters.Clear();就可以了,也就是在同一事务中若要多次执行带有相同参数名的SQL语句,必须在第一次执行后清理参数.
如下代码:(此代码是我的sqlhelper中的一个函数)
版权声明:本文为博主原创文章,未经博主允许不得转
相关文章推荐
- 求大数积
- 用java中的URL读取网页信息
- 【线性代数公开课MIT Linear Algebra】 第十五课 Ax=b与投影矩阵
- UIStepper
- django rest framework
- Shiro使用和原理分析---2
- hdoj 2023 求平均成绩【基础题】
- 二叉搜索树的基本操作
- sort自定义cmp函数
- UISleder
- 【转】Oracle之物化视图
- 问题解决:SqlParameterCollection只接受非空的SqlParameter类型对象,不接受SqlParameter[]对象
- poj Drainage Ditches 1273 (最大流入门)
- Java并发小结,先验条件、后验条件等概念
- 关于文件-NIO
- UIView
- UIPageControl
- 34岁,重新开始!
- Eclipse搜索文件名,以及搜索文件中特定的内容
- RestTemplate 调用