机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个判断并生成查询条件strCondition。 在机房收费系统的联合查询模块中出现的问题:System.Data.SqlClient.SqlException类型的未经处理的异常在 S
机房收费系统中,有些人在联合查询这个模块用的是存储过程,我先尝试着在数据库中建立了一个视图,然后在UI层做个判断并生成查询条件strCondition。
在机房收费系统的“联合查询”模块中出现的问题:“System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生。其他信息: 在应使用条件的上下文(在 '@strCondition' 附近)中指定了非布尔类型的表达式。
出错的DAL层代码为:
Public Function QueryOnLineStatus(ByVal strCondition As String) As List(Of Entity.QueryOnLineStatusViewEntity) Implements IDAL.IQueryOnLineStatusView.QueryOnLineStatus Dim cmdText As String = "select * from QueryOnLineStatus_View where @strCondition" '定义查询字符串(strCondition为UI层传过来的查询条件) Dim cmdType As CommandType = CommandType.Text '定义命令类型 Dim sqlHelper As New SqlHelper '实例化SqlHelper类 Dim myList As List(Of Entity.QueryOnLineStatusViewEntity) Dim dtb As New DataTable Dim parameters As SqlParameter() parameters = {New SqlParameter("@strCondition", strCondition)} dtb = sqlHelper.ExecuteSelect(cmdText, cmdType, parameters) myList = Entity.EntityHelper.ConvertToList(Of Entity.QueryOnLineStatusViewEntity)(dtb) 'EntityHelper.ConvertToList的功能是把DataTable类型转化为泛型集合 Return myList End Function
代码里SQL语句中的strCondition是从UI层传过来的查询条件,此错误发生时,在调试中已经证明查询条件没有错误,如下图:strCondition的值为:“cardNumber='1' ”,所以整个SQL语句不就是“ select * from QueryOnLineStatus_View where cardNumber='1' ”嘛!

最后解决这个问题的办法太出乎我的意料:把原SQL语句"select * from QueryOnLineStatus_View where @strCondition"中“where”和"@strCondition"之间的空格给去掉,将SQL语句变成"select * from QueryOnLineStatus_View where@strCondition"。
经过一阵冥思苦想,在数据库中尝试了好多次后,才明白这到底是为什么。。。。
先看在数据库中测试的结果:
1、当查询语句中where后面是一个值时(假设这个值是1):
(1)、查询语句中where与1之间没有空格,查询出正确结果;
(2)、查询语句中where与1之间有空格,报错:在应使用条件的上下文(在 '1' 附近)中指定了非布尔类型的表达式;
2、假设查询语句中where后面是一条语句时(假设这条语句是“1=1”):
(1)查询语句中where与“1=1”之间有空格,查询出正确结果;
(2)查询语句中where与“1=1”之间没有空格,报错:'=' 附近有语法错误。
原来,SQL语句中,where后面跟的是一个Boolean型的值。
【画龙点睛】
在where后面,如果仅仅是一个Boolean类型的值或者Boolean类型的变量,那么where和这个Boolean值之间是不可以有空格的(这时,我的代码中的@strCondition就是一个Boolean类型的变量;但如果where后面是一条语句的话(当然这一条语句的整体也是一个Boolean类型的值,比如“1=1”),那么这条语句和where之间就必须要有空格。

PDF文件作为一种通用的文件格式,被广泛应用于各种应用场景,如电子书、报表、合同等等。在开发过程中,我们常常需要对PDF文件进行生成、编辑、读取等操作。而PHP作为一种脚本语言,也能够轻松地完成这些任务。本文将介绍使用PHP处理PDF文件的方法。一、生成PDF文件生成PDF文件有许多方法,其中最常见的是使用PDF库。PDF库是一种生成PDF文档的工具,它为

如何处理Linux系统中频繁出现的进程资源耗尽问题概述:Linux系统下,有时会出现进程资源耗尽的情况,如CPU负载高、内存占用过多等问题。这些问题可能导致系统性能下降,甚至系统崩溃。本文将介绍一些解决进程资源耗尽问题的常见方法。一、定位问题:监测系统资源:使用top、htop等工具监测系统资源的使用情况,包括CPU、内存、磁盘和网络等。查看进程:使用ps命

CakePHP是一个开源的Web应用程序框架,它基于PHP语言构建,可以简化Web应用程序的开发过程。在CakePHP中,处理文件上传是一个常见的需求,无论是上传头像、图片还是文档,都需要在程序中实现相应的功能。本文将介绍CakePHP中如何处理文件上传的方法和一些注意事项。在Controller中处理上传文件在CakePHP中,上传文件的处理通常在Cont

CakePHP是一个流行的PHP开发框架,它可以帮助开发者快速构建高质量的Web应用程序。随着全球化的发展,越来越多的应用需要支持多语言,CakePHP也提供了相应的支持。本文将介绍CakePHP如何处理多语言。一、多语言支持多语言支持是CakePHP的一项重要功能。从版本2.0开始,CakePHP支持gettext文件格式,该

在进行JavaFX应用程序开发的过程中,我们常常会遇到JavaFX线程卡顿错误。这种错误的严重程度不同,可能会对程序的稳定性和性能产生不利的影响。为了保证程序的正常运行,我们需要了解JavaFX线程卡顿错误的原因和解决方法,以及如何预防这种错误的发生。一、JavaFX线程卡顿错误的原因JavaFX是一个多线程的UI应用程序框架,它允许程序在后台线程中执行长时

随着现代Web应用不断发展,PHP作为其中最流行的编程语言之一,被广泛地应用于网站开发中。但在开发过程中,经常会遇到空值错误,而这些错误会导致应用程序抛出异常,进而影响用户的使用体验。因此,在PHP开发过程中,如何检测和处理空值错误,是程序员们需要掌握的重要技能。一、什么是空值错误在PHP开发过程中,空值错误通常指的是两种情况:变量未初始化和变

在企业级应用程序中,分布式系统已经成为一个常见的架构模型。分布式系统由多个处理单元(节点)组成,这些节点协同工作以完成复杂的任务。在分布式系统中,事务处理是一个必不可少的组件,因为它能够确保所有节点协同工作的结果一致性。本文将介绍如何构建基于SpringBoot的分布式事务处理。一、什么是分布式事务处理?在单节点系统中,事务处理通常是一个简单的过程。当应用

随着Excel文件在商业领域和日常生活中的不断普及和应用,我们经常需要使用PHP处理Excel文件,例如数据的导入导出,数据的筛选和排序等。因此,本文将介绍如何使用PHP进行Excel文件处理。安装PHPExcel库PHPExcel是一款强大的PHP操作Excel文件的开源库,其支持读取、写入Excel文件,并提供了许多便捷的操作方法。在使用之前需要先安装P


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。