首先count的返回为0肯定不是统计结果为0,这里的情况是在服务器做查询,根据打印的sql到数据库去查询count是有统计量的,返回的row是1,就是有统计结果的。但是服务器上打印的sql就显示 <== Row: 0,这个是因为服务器发送查询sql到数据库去执行过程中有中文,这个中文在你代码层面可能是转码过的,所以在代码层面不会显示乱码,这才是迷惑人的地方,而且如果数据库表的字符集也是utf-8,那如果这个问题说是中文编码问题引起就更让人费解了,将sql直接拷贝到数据库去执行没问题,但是通过代码连数据库去执行sql就返回0行结果集(不是统计结果为0),笔者通过查询资料,做了个修改,解决了这个问题,因为数据库是通过jndi配置,jndi又在tomcat的server.xml集成,所以在jndi那段连数据库url中加入了字符转码的配置,默认是连数据库的url中不需要配置的。没错,一个完整请求过来笔者先在代码层进行了utf-8转码了,现在还在连数据库的层面再转utf-8,这里比较合理的解释就是莫名其妙的环境问题了。具体配置如下:
39 <!--配置MySQL数据库的JNDI数据源--> 40 <Resource