实在搞不懂,这个遍历怎么显示的结果都不对!!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/> ");
}
这样我应该就能看出问题了。