使用ODBC数据源era连接MDB数据库,目的是查询表category中所有的目录,并按树形结构显示,
为了使用树形的结构,使用了递归调用,但是出错。如果不使用递归调用,就没问题。
这个应该是数据库连接不允许递归还是JAVA不支持递归还是我哪里搞错了?程序如下:
import java.sql.*;Connection conn = null;
Statement stmt = null;
private void DoConnect()
{
  try 
  {
      if (conn == null) 
      {
  // 使用ODBC数据源era连接MDB数据库
          DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
          String url="jdbc:odbc:era";
          conn = DriverManager.getConnection(url,"","");
      }
      if(stmt == null)  stmt = conn.createStatement();
  } 
  catch (SQLException e) 
  {
  }
}String sb = "";
/*
查找父目录的id为parentid下的所有子目录树。调用时parenti=0
参数:parentid,父目录的id
*/
public String getCategoryNode(String parentid)
{
  String cid="";
  ResultSet rs = null;
  DoConnect(); // 连接数据库
  try 
  {
      String sql = "select CategoryID, Name from Category where ParentCategoryID=" + parentid + " order by Name";
      rs = stmt.executeQuery (sql);
      if (rs == null || !rs.next()) return "";
      else 
      {
          do 
          {
              cid = rs.getString("CategoryID"); // 目录ID
              sb += rs.getString("Name") + "\n";
              
              sb += getCategoryNode(cid); // 递归调用,查找该目录下的所有子目录
              
          }while (rs.next());
          return sb;
      }
  } 
  catch (SQLException e) 
  {
      return ("ERROR");
  }  
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【nataka】截止到2008-07-26 11:11:55的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:10                       每贴平均分数:10                       
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:10                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html