江湖救急,请帮忙,我的JSP程序联ORACLE库出现很头疼很意外的问题,急,急急~~~~~~~~~~!!!

alps014 2006-04-15 10:27:50
我的JSP程序本来调试的过程是联ACCESS库的一共有两个功能,使用的票查询,一个是用户管理
完成后,实际运行用ORACLE库,我就在oracle中建立了和ACCESS一样的表,直接倒过去的,然后运行,用户管理功能都好用,但是票查询确不好使,就算有数据也查不出来,不知道怎么回事
提问:
1.是不是ACCESS和ORACLE的查询语句的实现有否区别?
2.数据库中的表名和字段名是否区分大小写?
3.GS大哥认为我遇到问题可能是什么原因?
小弟在线等,多帮忙,谢谢!
...全文
297 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
GODProbe 2006-04-16
  • 打赏
  • 举报
回复
装个ORACLE客户端,如果客户端能正常连接ORACLE并显示内容再把SQL在客户端执行看看。如果也正常那应该是ORACLE字符集问题。
alps014 2006-04-16
  • 打赏
  • 举报
回复
year1,month1,day1都是 数据库中的一列,这个数据库不是很规范,所以年月日都示分开写的字符串,不是什么DATA类型。查询合中文应该没有关系,上面的系统票中就没有中文也查部到
主要就说我用的SQL语句是不是在ORACLE里部能用
trumplet 2006-04-15
  • 打赏
  • 举报
回复
另外,oracle和access的SQL有细微的差别,若不是极为特殊的功能,基本上没有差别。
trumplet 2006-04-15
  • 打赏
  • 举报
回复
查询时不区分大小写,但数据字典里的内容只能是大写。

从access到oracle导数据,不知道您用的是什么工具。如果是oracle提供的工具,应该不会有问题。导入结果会将所有的表名、列名转换为大写存如oracle的数据字典。但是,某些工具会将小写直接存入oracle的数据字典,则会导致应用程序出现无法查询表、列的现象。

select table_name from user_tables
select * from sys.user_col_comments
看看表名。列名有没有小写的。

如果有小写的,不要直接修改数据字典,应该用管理工具删除表,然后重新创建表。
beyh 2006-04-15
  • 打赏
  • 举报
回复
查询语句用的通配符也好象不一样
Student02370236 2006-04-15
  • 打赏
  • 举报
回复
你的票查询功能里边是不是有什么特殊的字符,有可能是ORACLE的字符集和ACCESS的不兼容...
zbo 2006-04-15
  • 打赏
  • 举报
回复
在JSP里的SQL语句打出来,
放到ORACLE中试一下。
至于大小写,应该是不区分的。
wsk_228 2006-04-15
  • 打赏
  • 举报
回复
把你那部分代码附上来
alps014 2006-04-15
  • 打赏
  • 举报
回复
运行也没错误,就是应该能查出票,就是查不出来,急死!
联ACCESS就能查出来
wsk_228 2006-04-15
  • 打赏
  • 举报
回复
不区分大小写,一般的查询语句没差不多。

在运行中报的错是什么?
wsk_228 2006-04-15
  • 打赏
  • 举报
回复
String sql="select distinct(piaohao) from 综合令操作票 where bdsname='"+choose4+"' and year1+month1+day1>='"+data3+"' and year1+month1+day1<='"+data5+"'";

把你的数据带上来看一下,再就是你的year1+month1+day1是什么来的,是一个字段名,还是什么东东,我没看明白...还有就是在查询语句中最好不要用中文,有时就因为这个也会出错的哟....
trumplet 2006-04-15
  • 打赏
  • 举报
回复
ResultSet rs3=conn.executeQuery(sql);

把这句 try 一下

try {
ResultSet rs3=conn.executeQuery(sql);
}
catch(Exception e){
e.printStackTrace()
}

看看能不能得到错误信息。
alps014 2006-04-15
  • 打赏
  • 举报
回复
我就是在比较日期,在ACCESS里这样比较就好用,但是ORACLE里就不行,不知道为什么
ORACLE里数据类型全都是varchar2
alps014 2006-04-15
  • 打赏
  • 举报
回复
回WSK_228
alps014 2006-04-15
  • 打赏
  • 举报
回复
回TRUMPLET,列是varchar2
表名不是汉字我也试过了,不行
wsk_228 2006-04-15
  • 打赏
  • 举报
回复
'"+data3+"' '"+data5+"'
这些都是字符串了,在oracle中这个字段是日期型的那是查不出结果的.要to_date(...).另外oracle中日期格式也不一样,所以你先查清你格式了,再进行转换.
查看格式用
select * from nls_session_parameters
where parameter='NLS_DATE_FORMAT';
trumplet 2006-04-15
  • 打赏
  • 举报
回复
ResultSet rs3=conn.executeQuery(sql);

这一句没看懂,conn是Statement还是Connection?

String sql="select distinct(piaohao) from 综合令操作票 where bdsname='"+choose4+"' and year1+month1+day1>='"+data3+"' and year1+month1+day1<='"+data5+"'";

数据库里,列year1、month1、day1是啥类型的?number还是varchar2 ?

oracle里表名用汉字,个别情况会有问题(我只是听说)。
zhu_liping 2006-04-15
  • 打赏
  • 举报
回复
ORACLE中需要用到to_date()
zhu_liping 2006-04-15
  • 打赏
  • 举报
回复
我想应该是日期型的处理问题吧
alps014 2006-04-15
  • 打赏
  • 举报
回复
什么出错信息都没有,就是说在access中能查到的票,拿到oracle中就查不到了
加载更多回复(4)

81,091

社区成员

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

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