要通过递归的方式获得一条记录一级目录ID,但是总是返回 0(1——9为一级目录ID) 数据库: 
NDF_ID        NDF_Father      NDF_Name 
10            1                XXXX        
11            2                XXXXX 
12            1                XXXXXX 
13            2                XXXXXXX 
14            12              XXXXXXXX 
程序: public int GetMyFather(int FID) 

    if (FID > 9) { 
        string SQL = "SELECT [NDF_Father] FROM [RC_NetDiskFiles] WHERE [NDF_ID]=" + FID; 
        _Db.inStrConn = _Conn.Rocco; 
            //_Db.ExecuteScalar(SQL)是返回一个NDF_Father字段值 
        GetMyFather(_Db.ExecuteScalar(SQL)); 
    } 
    else { 
        return FID; 
    } 
}求解

解决方案 »

  1.   

    可以确定_Db.ExecuteScalar没问题
      

  2.   

    根据你的描述,父菜单ID应该是1-9,可你这个IF语句if (FID > 9)是大于9才执行?
    建议将if (FID > 9)改为if (FID < 9)试试
      

  3.   

    因为1-9的ID是直接写在程序中,不会在数据库中的NDF_ID 字段出现,如果参数FID小于10的话,我希望直接返回FID值,如果大于或等于10则向上查询,直到找到小于10的值为止
      

  4.   

    SELECT [NDF_Father] FROM [RC_NetDiskFiles] WHERE [NDF_ID]='" + FID+"'
    在查询分析器执行看看是否有数据
      

  5.   

    有数据,SQL语句和数据库查询部分我都反复验证过了
      

  6.   

    自己解决了:return GetMyFather(_Db.ExecuteScalar(SQL));