CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2EE / EJB / JMS

奇怪,这样有区别吗?(up有分)

楼主makeitbetter(黑色柳丁)2005-08-02 18:33:55 在 Java / J2EE / EJB / JMS 提问

程序用JDBC连DB2的数据库.  
  其中有一条是insert   into   table(....)   select(....)形式的插入SQL语句.  
  程序每执行到这条语句,都会停滞,显示是在一直执行,可是等了一个小时都没结果.  
  我试着把这条语句在DB2的客户端工具上直接执行,检索并插入了四千多条数据,耗时81秒.  
  真奇怪,这条语句可以直接执行,通过应用程序怎么就不行了呢?请大家赐教. 问题点数:100、回复次数:23Top

1 楼interhanchi(on the Java Road)回复于 2005-08-02 18:49:01 得分 5

帮你顶!Top

2 楼joneyonly()回复于 2005-08-02 18:58:41 得分 5

难道死循环?  
  帮你UPTop

3 楼huangdeji(活着就是等死)回复于 2005-08-02 19:31:22 得分 10

很有可能是抛出了sql异常,然而你没有rollback从而出现了排他现象而导致的Top

4 楼makeitbetter(黑色柳丁)回复于 2005-08-03 08:13:18 得分 0

我处理异常了呀,而且直接执行时也没出现异常.  
  晕啊Top

5 楼kingofhawks(蓝鹰)回复于 2005-08-03 08:46:17 得分 5

是不是因为程序里执行效率太低所致?用的连接池还是JDBC?Top

6 楼hawaii_wx(梦见夏威夷)回复于 2005-08-03 09:03:56 得分 5

upTop

7 楼ses127127(ses)回复于 2005-08-03 09:19:09 得分 5

你可以用预编译的方法试试你的sql语句Top

8 楼tanghuan()回复于 2005-08-03 09:27:21 得分 0

你开的是自动提交事务还是手工提交事务。  
  按说,你在正常命令行中81秒,在程序中也应该是,估计是不是未提交,或则被连接的事务把记录锁住了,但又没有形成死锁环,所以会一直等待其他事务放掉锁Top

9 楼sunnyboy409()回复于 2005-08-03 09:28:10 得分 5

顶Top

10 楼liudongbaollz()回复于 2005-08-03 09:28:56 得分 10

检查jdbc驱动,可能驱动不支持这种用法,一般情况下驱动只支持常用的sql语句Top

11 楼makeitbetter(黑色柳丁)回复于 2005-08-03 10:11:28 得分 0

to   tanghuan()    
  估计是不是未提交,或则被连接的事务把记录锁住了,但又没有形成死锁环,所以会一直等待其他事务放掉锁  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  程序是手工提交事务,这个操作是事务里的第一步.  
  可为什么会被锁住呢?事务没有执行完也不能提交啊.请问有没有解决办法?Top

12 楼makeitbetter(黑色柳丁)回复于 2005-08-03 10:15:58 得分 0

to     liudongbaollz()    
  检查jdbc驱动,可能驱动不支持这种用法,一般情况下驱动只支持常用的sql语句  
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  不应该啊,在数据量小的情况下,比如说插入几十条数据,这个操作就好用,应该不是不支持的问题.Top

13 楼IFindit(寻找其中的乐趣)回复于 2005-08-03 10:30:44 得分 20

是不是支持的不好,DB2的客户端如果装在windows下,走的是ODBC,所以ODBC肯定没问题。你在JDBC中用二分法,增加数据,看到多少条就会down掉,或者下载个新的驱动试试Top

14 楼tanghuan()回复于 2005-08-03 21:29:26 得分 0

IFindit(寻找其中的乐趣)  
  DB2的驱动可以不走ODBC,可以采用网络连接方式Top

15 楼tanghuan()回复于 2005-08-03 21:32:07 得分 0

主要是你的程序是不是不只有一个数据库连接,被其他连接的事务给锁定了,才能让你这个事务等待,如果是这个事务本身是不会的,锁的目的是保证不被其他事务影响和不影响其他事务Top

16 楼zclgod(春风化雷)回复于 2005-08-03 23:09:33 得分 5

sql可以。  
  那就说明是你程序有我问题哦Top

17 楼An_wave(在软件行业是客户引导了我)回复于 2005-08-03 23:12:32 得分 5

UP~~没用过DB2Top

18 楼kypfos(不在寻梦)回复于 2005-08-03 23:42:41 得分 0

最大可能性我也觉得是造成了死锁Top

19 楼zhumeng459(竹梦)回复于 2005-08-04 09:33:20 得分 5

源码?!Top

20 楼shoulders(Developer)回复于 2005-08-04 09:53:11 得分 5

觉得是驱动程序的问题Top

21 楼liubeiqi(无爱无悔)回复于 2005-08-04 09:57:08 得分 5

UP..........没用过DB2Top

22 楼kindani(kindani)回复于 2005-08-04 10:32:52 得分 5

会不会是时间长连接自动断了?Top

23 楼makeitbetter(黑色柳丁)回复于 2005-08-04 13:05:47 得分 0

我是LZ.  
  谢谢这么多热心的回复.  
  如果是驱动程序问题的话,对另一个表的操作数据量也很大,但从没死过.  
  只有对这个表操作有问题,郁闷啊!Top

相关问题

  • ADO 和 BDE 的区别,奇怪啊!
  • 好奇怪,通过SQL建的表与Access里建表怎么有这样的区别???
  • 真奇怪 TStrings的IndexOf 和IndexOfName 有什么区别呢?很奇怪?
  • 关于localhost和127.0.0.1的区别的问题 奇怪!!
  • 这样两种方式使用存储过程有什么区别?100分
  • 50分求2者区别
  • 奇怪的事:HBRUSH hbrush=::CreateSolidBrush(RGB(R,G,B)和CBrush类的CreateSolidBrush有区别吗?
  • 大家有没有遇到这样奇怪的调试问题,高分
  • 你们遇到过这样的问题吗?奇怪、奇怪、真的很奇怪!!!
  • 十分奇怪的问题

关键词

  • 驱动
  • 语句
  • 执行
  • 连接
  • sql
  • 数据
  • jdbc
  • db
  • 事务
  • 程序

得分解答快速导航

  • 帖主:makeitbetter
  • interhanchi
  • joneyonly
  • huangdeji
  • kingofhawks
  • hawaii_wx
  • ses127127
  • sunnyboy409
  • liudongbaollz
  • IFindit
  • zclgod
  • An_wave
  • zhumeng459
  • shoulders
  • liubeiqi
  • kindani

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo