SELECT COUNT(1) AS NUM FROM TABLE WHERE TYPE = 'M'
执行查询后
resultSet.getInt("NUM")
这样是有值的。
如果采用公司框架
paramList.add("M");
DBTool.excuteQuery("SELECT COUNT(1) AS NUM FROM TABLE WHERE TYPE = ?",paramList);
则值为0
原因是框架采用了PrepareStatement,而库表里 TYPE字段类型为 CHAR(3),这样输入的M会自动在后面补上两个空格。
解决办法: 1.当然是数据库设计需要更合理一些,对于可变长度的字段还是用 VARCHAR2比较好
2.如果不能改库表结构,那就用
paramList.add("M");
DBTool.excuteQuery("SELECT COUNT(1) AS NUM FROM TABLE WHERE RTRIM(TYPE) = ?",paramList);