求解web项目中sql语句select * from tcapacity where tname=? 预编译问题 10

web项目中预编译sql语句select*fromtcapacitywheretname=?当我前台没有数据输入的时候,我将?的值设为tname为什么rs.next会为f... web项目中预编译sql语句select * from tcapacity where tname=? 当我前台没有数据输入的时候,我将?的值设为tname为什么rs.next会为false,查询不到数据。而我直接将sql语句写成select * from tcapacity where tname=tname就为true了?如图片所示 展开
 我来答
dark19861201
2017-01-07 · TA获得超过2151个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1731万
展开全部
你用预处理的时候的tname是个变量,但是你下面那个sql这么写相当于两个字段在比较,这样永远是true了,你如果要比较tname这个字符串,应该用tname='tname',要有引号才对
追问
谢谢回答,大致懂了你的意思。那么如果我是想根据前台传回的值是否为空来查询,该怎么写呢,比如传回的是空就查询全部,传回的不为空就查询对应的数据,因为有很多字段要判断,单个写的话要写非常多,所以想通过一个sql搞定。
追答
你根据前台传回来的值来拼接SQL就可以了,比如:
String sql="select * from tcapacity where 1=1";
if(tname!=null){
sql+=" and tname="+tname;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式