读书人

实在搞不懂,这个遍历如何显示的结果都

发布时间: 2011-12-23 23:32:01 作者: rapoo

实在搞不懂,这个遍历怎么显示的结果都不对!!1
<%!
String array22[] = new String[1000];
public void travel(int id,int num,String[] array) throws Exception
{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance();
String url= "jdbc:microsoft:sqlserver://192.168.235.33:1433;DatabaseName=XXX ";
String user= "sa ";
String password= "XXX ";
Connection conn= DriverManager.getConnection(url,user,password);
String sql= "select * from NS_ORGANIZATION where parent= "+id;
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
array[num++] = rs.getString( "name ");
if(rs.getString( "sonNum ")!= "0 ")
{
travel(rs.getInt( "id "),num,array);
}
}
rs.close();
stmt.close();
conn.close();

array22 = array;
}
%>
<%
String[] array =null;
array = new String[100];
travel(90,0,array);
for(int j=0;j <=20;j++)
{
out.print(array22[j]+ "haha <br> ");
}


数据库是这样的:

id name parent sonNum
90 网络办公室04
91 XX 902
99 YY 902
100 ZZ 902
101 AA 902
102 XX1 910
103 XX2 910
104 YY3 990
105 YY4 990
106 ZZ1 1000
107 ZZ2 1000
108 AA1 1010
109 AA2 1010


结果应该会输出所有结果;


但是却只输出XX YY ZZ AA AA1 AA2 AA3




[解决办法]
你试试这个语句,看看有啥结果,注意改动行用--changed标注了。

<%!
String array22[] = new String[1000];
int num = 0; // --changed

public void travel(int id,String[] array) throws Exception // --changed

{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ").newInstance();
String url= "jdbc:microsoft:sqlserver://192.168.235.33:1433;DatabaseName=XXX ";
String user= "sa ";
String password= "XXX ";
Connection conn= DriverManager.getConnection(url,user,password);
String sql= "select * from NS_ORGANIZATION where parent= "+id;
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
//////////////////// --changed

out.print( "num : " + num + rs.getInt( "id ")+ rs.getString( "name "));// --changed

//////////////////// --changed


array[num++] = rs.getString( "name ");

if(rs.getString( "sonNum ")!= "0 ")
{
travel(rs.getInt( "id "),array); // --changed

}
}
rs.close();
stmt.close();
conn.close();

array22 = array;
}
%>
<%
String[] array =null;

array = new String[100];
travel(90,array); // --changed

for(int j=0;j <=20;j++)
{
out.print(array22[j]+ "haha <br/> ");
}


这样我应该就能看出问题了。

读书人网 >Java Web开发

热点推荐