关于sql语句添加where条件问题,用java语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于sql语句添加where条件问题,用java语句相关的知识,希望对你有一定的参考价值。

在struts框架下,用java语句拼成where的子句,
情况是这样的:
页面上一共有45个不同名称的输入框可能作为where子句条件,要求是如果输入框中输入的值非空并且不是%的情况下,把该输入值作为检索条件,例如:adress对应输入框输入值为A,则在where子句中加入 adress like A 。
但如果一个一个字段分别判断,if语句太多,将使该方法体过于庞大,因为字段名称不同,不能直接应用while循环。

请教高人指点。
我的问题不是如何拼凑where子句,而是如何处理拼凑过程,因为要判断的字段比较多,普通拼凑方法将使方法体过于繁琐庞大,我写了一下,大概400多行/
现在需要的是:如何提高方法的执行效率以及缩小方法体体积。

对字符串的合法性判断应该放到页面上去,可以采用正则表达式,写到script脚本里去。这样首先就做到了从页面传来的信息都是合法的。
声明一个字符串变量sql,初始化为where前的sql语句。
声明一个整形变量count,初始化为0;
将从页面得到的信息进行判断,如果为空值则不加到sql后,如果不为空值,则先count++ ,再判断count是否为1,如果是1,那将条件直接加到sql语句之后,如果大于1,那么就在条件之前加"and"。
参考技术A 看看能不能用上正则表达式
那样判断很不错的
参考技术B 这个基本是字符串的组拼而已,很简单的啊

关于SQL语句条件值写中文查不到的问题

在使用jdbc链接MySQL执行SQL语句的时候,sql语句中的where条件,参数值带中文,则查询不到结果,而where条件,参数值都为数字或字母时可以正常查询,

原因是mysql的character_set_connection默认的设置不是utf8,我的解决办法,打开命令行提示符操作界面  登陆MySQL

 

执行 SET character_set_connection = utf8 ;命令,然后在数据库连接的url中要带字符设置  比如 jdbc:mysql://localhost:3306/goods?useUnicode=true&characterEncoding=UTF-8 ,这样才能解决问题

 

网上有的方法有,修改Ini文件,试过无效,关于该问题可以参考一下文章  http://www.cnblogs.com/discuss/articles/1862248.html

 

原文转自:CSDN-博客:@奋斗中的二逼青年

以上是关于关于sql语句添加where条件问题,用java语句的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句关于where判断问题

SQL语句的效率问题

sql查询语句,where条件中包含单引号的解决方案

java动态拼接sql语句并且执行时给sql语句的参数赋值

如何为删除的 SQL Server 合并语句添加 where 条件

关于SQL语句条件值写中文查不到的问题