这个问题我实在是受不了了,baidu了无数就是找不到答案
问题是这样的:
遍历
使用循环查询,父节点 -> 子节点 ,再以字节点为父节点继续查询,遍历到最后.
现在的问题是,循环进行的时候Tomcat总是时不时的从Start状态变成Stop状态其中循环的时候使用Arraylist.Add增加父节点的List(每次查询到的子节点,如果ArrayList中不存在就添加到Arraylist中变成父节点)
这样以Arraylist的size为循环查询的次数.比如:有一些父节点A,B,C,D 我要找到所有相关节点,第一次循环(i=0;i<list.size();i++)A找到E、F listsize 4变成6
那么父节点List变成A,B,C,D,E,F ,第二次循环查询B节点查到D、G Listsize变成7
那么父节点List变成A,B,C,D,E,F,G(D是重复的不添加)
错误信息:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77c181cd, pid=5452, tid=5468
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [msvcrt.dll+0x381cd]
产生Error File : hs_err_pid5452.log
问题是这样的:
遍历
使用循环查询,父节点 -> 子节点 ,再以字节点为父节点继续查询,遍历到最后.
现在的问题是,循环进行的时候Tomcat总是时不时的从Start状态变成Stop状态其中循环的时候使用Arraylist.Add增加父节点的List(每次查询到的子节点,如果ArrayList中不存在就添加到Arraylist中变成父节点)
这样以Arraylist的size为循环查询的次数.比如:有一些父节点A,B,C,D 我要找到所有相关节点,第一次循环(i=0;i<list.size();i++)A找到E、F listsize 4变成6
那么父节点List变成A,B,C,D,E,F ,第二次循环查询B节点查到D、G Listsize变成7
那么父节点List变成A,B,C,D,E,F,G(D是重复的不添加)
错误信息:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77c181cd, pid=5452, tid=5468
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [msvcrt.dll+0x381cd]
产生Error File : hs_err_pid5452.log
-server下载最新的jdk ,加大jvm的最大堆栈内存
刚才想发,但是不能连续回复3次
断点发现:
104次连接
Connection建立,STMT建立,SQL查询没有执行
手动执行SQL语句完全没问题,执行结果正常。
是不是数据库对连接有限制?
说明是连接发生了错误啊,pid5452是什么,有5452个进程?,还有TID呢?
SMST.close ,然后Connection不进行close,再循环建立STMT和RS,结果和上述情况一样.
一般你的表结构应该是有一个父结点ID字段吧,你做一个左连接就可以出结果了.
id pid name
select a.id,a.name as pname,isnull(b.name,'') as name as from table1 a left join
table1 b on a.id=b.pid如果name为""表示这个结点没有子结点.试试下边这句能不能把有子结点的查出来.
select distinct a.id,a.name as pname from table1 a ,table1 b
where a.id=b.pid