免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: aquino
打印 上一主题 下一主题

java 访问oracle的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-04-11 23:44 |只看该作者
这个就不清楚了,executeUpdate()返回操作影响的行数,是SQLException还是数据库没有反映?
如果不是Exception的话,打印方法返回值看看?如果返回值不是0而是个正整数那么应该是插入成功了
可数据库还是没有反映?您是从sqlplus来看么?会不会是访问权限的问题?会不会是并发访问控制的问题?SGA脏数据没有回写?两个连接看同一张表我记得是操作互相看不出来的

execute()返回布尔值为true则是有结果集,false是没有结果集,您这语句若没有出异常应该是返回false

executeQuery()就不用试了

论坛徽章:
0
12 [报告]
发表于 2006-04-12 09:44 |只看该作者
原帖由 艾斯尼勒 于 2006-4-11 23:44 发表
这个就不清楚了,executeUpdate()返回操作影响的行数,是SQLException还是数据库没有反映?
如果不是Exception的话,打印方法返回值看看?如果返回值不是0而是个正整数那么应该是插入成功了
可数据库还是没有反 ...


PreparedStatament  与 Statement 有什么不同, 两个我都试过了,都不行。

execute() = false
executeUpdate() = 0

完整的SQL 语句如下:


  1. insert into hhm_ptbtemp (stuhao, sbanben, mtuhao, mbanben, ptuhao, pbanben, yutouchan, peiduifalan, jinkou, jiazhang, beijian, gongju, chuanchang, chuanjishe, lujing1, lujing2, lujing3, lujing4, xianghao )
  2. select s.gongchengbianhao, s.banben, m.tuhao, m.banben, p.tuhao, p.banben, p.yutouchan, p.peiduifalan, p.jinkou, p.jiazhang, p.beijian, p.gongju, p.chuanchang, p.chuanjishe, p.lujing1, p.lujing2, p.lujing3, p.lujing4, p.xianghao from hhm_specfeature s, hhm_modulefeature m, hhm_partfeature p
  3. where p.moduleid=m.id and m.specid=s.id and s.gongchengbianhao='T1234T';
复制代码

上边的SQL在程序里执行没有异常,但是插入不成功, 而如果贴到SQLPLUS里是成功的;如果我把SQL换成简单的insert into hhm_ptbtemp (...) values (...)这种形式, 在程序里和在SQLPLUS都是成功的

[ 本帖最后由 aquino 于 2006-4-12 09:47 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-04-12 13:41 |只看该作者
原帖由 aquino 于 2006-4-12 09:44 发表


PreparedStatament  与 Statement 有什么不同, 两个我都试过了,都不行。

execute() = false
executeUpdate() = 0

完整的SQL 语句如下:

[code]
insert into hhm_ptbtemp (stuhao, sbanben, mtu ...


executeUpdate() = 0

的确没有影响任何一行啊,这个帮不了你了,可能得去oracle的版面问问吧

论坛徽章:
0
14 [报告]
发表于 2006-04-12 15:20 |只看该作者
原帖由 aquino 于 2006-4-11 23:42 发表


oracle的这个语法是对的, 直接贴到sqlplus可以运行的

debug一下,看看你的statmnet和connection变量的值是否为空,我以前遇到这样的问题,的时候就发现statment或者connection为空。相信jdbc,相信oracle,问题一定出在你的程序里面!

论坛徽章:
0
15 [报告]
发表于 2006-04-12 21:59 |只看该作者
原帖由 moumoulrc 于 2006-4-12 15:20 发表

debug一下,看看你的statmnet和connection变量的值是否为空,我以前遇到这样的问题,的时候就发现statment或者connection为空。相信jdbc,相信oracle,问题一定出在你的程序里面!



说的好,确实是我程序的问题, 每次插入之前,都不小心执行了一个purgePtbData()方法来把源表清空,所以每次都是空的,呵呵,我都要疯了


多谢大家伙捧场啊~

论坛徽章:
0
16 [报告]
发表于 2006-04-12 22:22 |只看该作者
人为因素,害死自己了......
不过长进不少!!!
值得!

论坛徽章:
0
17 [报告]
发表于 2006-04-12 22:26 |只看该作者
确实,这样的错误很难再重复犯了,犯了也能很快排除了

论坛徽章:
0
18 [报告]
发表于 2006-04-13 00:24 |只看该作者
程序员很多时候都是在跟自己捉迷藏

论坛徽章:
0
19 [报告]
发表于 2006-04-13 14:30 |只看该作者
原帖由 kakasi 于 2006-4-13 00:24 发表
程序员很多时候都是在跟自己捉迷藏


饿不是撑虚圆,我是业余滴

论坛徽章:
0
20 [报告]
发表于 2006-05-25 14:36 |只看该作者
用oracle的stmt应该可以
oracle.sql.*
CallableStatement cstmt = null;
cstmt = cn.prepareCall(sql);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP