用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,这是为什么?????????????????百思不得其解!!
...全文
563 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

环境配置无任何问题,执行别的操作都非常正常,除了上面的语句。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧