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

(1)

[vb] view plaincopy
  1. 'sql语句
  2. Dim sql As String = "SELECT COUNT(*) FROM T_UserInfo WHERE UserName=@UserName"
  3. '设置参数
  4. Dim parameter As SqlParameter = New SqlParameter("@UserName", enUser.UserName)

(2)

[vb] view plaincopy
  1. 'sql语句
  2. Dim sql As String = "SELECT UserName,PassWord FROM T_UserInfo WHERE UserName=@UserName AND PassWord=@PassWord"
  3. '设置参数
  4. Dim parameters() As SqlParameter =
  5. {
  6. New SqlParameter("@UserName", enUser.UserName),
  7. New SqlParameter("@PassWord", enUser.PassWord)
  8. }

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

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

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

问题在于:

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

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

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

版权声明:本文为博主原创文章,未经博主允许不得转

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

  1. c++ 已声明变量提示未定义

    第一次崩溃的感受到vs2008是多么坑爹. 已声明变量,死活提示未定义. 心中一万匹草泥马往返奔腾了无数次 没办法,自己写个小demo,一个一个变量试. tnd,终于发现问题了. 就因为涉及到了str ...

  2. python怎么创建变量不赋值_python声明变量不赋值

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 动态类型的语言python是动态类型的语言,不需要声明变量的类型. 实际上,py ...

  3. js声明php变量,vue.js怎样声明变量

    vue.js声明变量的方法:1.使用let定义,let是块级作用域,函数内部使用let定义后,对函数外部无影响:2.使用var定义,var定义的变量可以修改:3.使用const定义,const定义的变 ...

  4. java方法中的循环里的变量_Java中循环声明变量方法

    Java循环声明变量 之前想这样做,但是网上一直搜索不到,下面是我的方式 项目中 // 得到需要查询外表的数量,然后分别创建缓存,插入数据多的时候如果编码在缓存里面,就不需要再去查询数据库了.key: ...

  5. 浅谈js中的var和function变量提升,var声明变量提升,块级作用域中的函数提升

    1.首先最常见的一种变量提升 console.log(a); //输出 undefinedvar a=10;console.log(a) // 输出 10 var 有提升的作用其实上面的代码会变成会变 ...

  6. js声明变量的三种方式

    JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...

  7. python中变量不需要事先声明_第二章 Python 变量

    2.1  Python变量 在 Python 中变量不需要事先声明变量名及其类型,直接赋值即可创建各种变量(不要使用关键字为变量名),例如: >>>x = 4 >>> ...

  8. 详解var、let、const关键词声明变量的区别,以及变量提升、块级作用域的认识等。

    首先回顾一下JavaScript中var声明变量的基础知识: • 在使用var关键词声明变量时,变量在函数外则是全局变量,有全局作用域,全局变量在页面关闭后销毁:变量在函数内则是局部变量,作用局部作用 ...

  9. 【Access各种类型变量表示】声明模块变量的用法,变量符号用法,文本型变量.日期型变量,数字型变量,数值型变量的符号表示法

    作 者:麥田   ID:11  城市:上海  QQ:3002789054 摘 要:声明模块变量的用法,变量符号用法,文本型变量.日期型变量,数字型变量,数值型变量的符号用法 正 文: 首先需要在模块声 ...

最新文章

  1. 本科刚毕业有点迷茫,想入门单片机,应该怎么开始?
  2. 独家 | Tableau中的Z-Order了解一下!
  3. ThinkPHP第二十三天(Category表结构、PHPExcel导入数据函数)
  4. Maven添加Oracle的依赖及驱动
  5. c语言课设报告河海大学,2020河海大学计算机学硕838经验贴
  6. vue组件调用(全局调用和局部调用)
  7. 使用Angular,Ionic 4和Spring Boot构建移动应用
  8. 乾通嗖嗖抢先布局多元化用工 实现全流程数智化人力管理
  9. 中国.COM域名注册量达404万个 排名全球第三
  10. Android开发笔记(四十五)手势事件
  11. GRASP设计原则(职责分配原则)
  12. declare sql语句_SQL高级知识——动态SQL
  13. 人工智能ai以算法为基础_为公司采用人工智能做准备
  14. Linux dstat监控工具简讲
  15. 微软同步工具之synctoy
  16. arkit 人脸捕捉_iPhone X上的ARKit人脸追踪
  17. 用c语言做一个栈,完成逆波兰表达式
  18. Docker的安装及加速器配置
  19. VMware虚拟网络交换机的优点和缺点
  20. 单片机、嵌入式错综复杂的关系分析

热门文章

  1. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | 加固厂商在 ART 下使用的两种类加载器 | InMemoryDexClassLoader 源码 )
  2. 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
  3. 【Android 插件化】“ 插桩式 “ 插件化框架 ( 注入上下文的使用 )
  4. 【Android 热修复】热修复原理 ( 多 Dex 打包机制 | 多 Dex 支持 | Dex 分包设置 | 开发和产品风格设置 | 源码资源 )
  5. 【Visual Studio 2019】上传代码到 GitHub ( 16.9.2 版本 | 安装 GitHub 扩展插件 | 创建 Git 仓库 | 推送到远程仓库 )
  6. 【计算理论】图灵机 ( 非确定性图灵机 -> 确定性图灵机 | 模仿过程示例 | 算法的数学模型 )
  7. HashMap构造函数有哪些
  8. Android JNI 传递对象
  9. Cocos2d-x游戏中默认的AndroidManifest.xml的解析
  10. 基于新唐M0的XXTEA加密解密算法源码