用select count(*) from xxx;在SQLPLUS查询返回2,可用rs.getInt(1)返回竟然是0!!!

hccpro 2001-11-02 05:43:20
sql = "SELECT count(*) FROM xxx WHERE department LIKE '%"+departmentName[i]+"%'";
rs = stmt.executeQuery(sql);
if (rs.next()) out.println(rs.getInt(1));


返回总为0,这是为什么?????????????????百思不得其解!!
...全文
473 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hccpro 2001-11-03

给分啦!!!

收帖啦!!!
  • 打赏
  • 举报
回复
hccpro 2001-11-03
感谢“黄黄”和“老农”!!

确实是中文问题,犯了个低级错误,因为很少有中文出现,所以没注意到这个问题。

非常感谢大家的帮助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • 打赏
  • 举报
回复
hzm1029 2001-11-03
是不是汉字问题啊?
你用sql="select * from xxx where department like ?";
然后...Prepare...那种方式。
  • 打赏
  • 举报
回复
hyhong_h 2001-11-03
departmentName[i]是不是中文?
  • 打赏
  • 举报
回复
killwin 2001-11-03
你试一下:
sql="select * from xxx where department like %XXX%";
i=0;
rs = executeQuery(sql);
while(rs.next()){
i++;
}
out.print(i);
如果仍是0,则是你数据库有问题了!
  • 打赏
  • 举报
回复
hccpro 2001-11-03

SQL语句在SQLPLUS里执行完全正常,%???%内没有空格。

JDBC已换成ORACLE网站上的最新驱动,发现此驱动与ORACLE光盘上的驱动完全一样(文件比

较),运行后问题依旧。

hexiaofeng兄的方法没太看明白,怎么那么多+号啊?
  • 打赏
  • 举报
回复
hexiaofeng 2001-11-03
sql = "SELECT count(*) FROM xxx WHERE department LIKE "+'"'+"%"+departmentName[i]+'"'+"%"+'"';
  • 打赏
  • 举报
回复
simoncn 2001-11-03
JDBC驱动用的是oracle自带的:classes12.zip
Get new JDBC driver from OTN. Oracle driver has many many bugs...
  • 打赏
  • 举报
回复
hzm1029 2001-11-02
我觉得你生成的sql有问题。
1、大小写问题
2、'%????%' 中可能包含空格
3、还没有想出来
你把生成的sql println出来,然后拷贝到sqlplus里研究一下,应该没有问题。
  • 打赏
  • 举报
回复
hccpro 2001-11-02
上面的方法全试过了,均无效!

俺在标题已经说过(也许没说明白):在SQLPLUS里面可以正常执行,返回是正确结果:2

可用程序就出问题了,

用Tarloy兄的方法不会打印not value found,只会输出0

用路人甲前辈的方法也无效,返回仍旧是0

急需帮助,这种问题头一次碰到!大家有碰到过吗???
  • 打赏
  • 举报
回复
Tarloy 2001-11-02
sql = "SELECT count(xxx.*) FROM xxx WHERE department LIKE '%"+departmentName[i]+"%'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
out.println(rs.getInt(1));
}else{
out.println("not value found.");
}
  • 打赏
  • 举报
回复
Tarloy 2001-11-02
sql = "SELECT count(xxx.*) FROM xxx WHERE department LIKE '%"+departmentName[i]+"%'";
rs = stmt.executeQuery(sql);
if (rs.next()) {
out.println(rs.getInt(1));
}else{
out.println("not value found.");
}
  • 打赏
  • 举报
回复
6leaf 2001-11-02
同意(FrenziedDragon)!

或者修改如下:
sql = "SELECT count(*) as countNum FROM xxx WHERE department LIKE '%"+departmentName[i]+"%'";
System.out.println(sql); // 如果还有问题,在SQL*Plus中执行该SQL语句,看输出结果如何
rs = stmt.executeQuery(sql);
if (rs.next()) out.println(rs.getInt("countNum"));
  • 打赏
  • 举报
回复
skyyoung 2001-11-02
if (rs.next()) out.println(rs.getInt("count(*)"));
  • 打赏
  • 举报
回复
frenzieddragon 2001-11-02
把这句sql打印出来拿到sqlplus里面运行试试
  • 打赏
  • 举报
回复
hccpro 2001-11-02
补上俺系统的配置:

win2000 + tomcat + apache + oracle8i,JDBC驱动用的是oracle自带的:classes12.zip

环境配置无任何问题,执行别的操作都非常正常,除了上面的语句。
  • 打赏
  • 举报
回复
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
申请成为版主
帖子事件
创建了帖子
2001-11-02 05:43
社区公告
暂无公告