首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2011-12-23 
实在搞不懂,这个遍历怎么显示的结果都不对!!1%!Stringarray22[]newString[1000]publicvoidtravel(intid

实在搞不懂,这个遍历怎么显示的结果都不对!!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/> ");
}


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

热点排行