0

私は立ち往生しているので、誰かが私がこれを考えるのを手伝ってくれることを願っています。

ASPClassicWebサイトを.NETWebアプリケーションにゆっくりと移行しています。次の関数に出くわしました。この関数は、hmla-tagsで構成される文字列の配列を返します。

Private Function getFullPathLinks(lNodeId, sPath, sDocTemplate)
    Dim sql, recordSet, rsTmp
    Dim arrPath, sResult
    Dim lDocId

    lDocId  = getDocumentId(lNodeId)

    sql = "SELECT parent_id, label FROM wt_node WHERE (node_id = " & lNodeId & ")"
    Set recordSet = execSqlCache(oConn,sql,Array(),Array("wt_node"))

    If Not (recordSet.Bof And recordSet.Eof) Then

        If sDocTemplate <> "" Then
            sPath = sPath & "|" & "<a href='" & sDocTemplate & "?nodeid=" & lNodeId & "&documentid=" & lDocId & "'>" & recordSet("label") & "</a>"
        Else
            sPath = sPath & "|" & recordSet("label")
        End If


        getFullPathLinks recordSet("parent_id"), sPath
    End If
    recordSet.Close
    Set recordSet = Nothing

    arrPath = arrReverse(Split(sPath,"|"))
    sResult = Join(arrPath,sPathDelimiter)
    If Right(sResult,Len(sPathDelimiter)) = sPathDelimiter Then sResult = Left(sResult,Len(sResult)-Len(sPathDelimiter))

    getFullPathLinks    = sResult

End Function

関数は最後にそれ自体を呼び出しますが、これは、DataReaderを使用してSQLデータベースと通信している私の.NET実装ではうまく機能しません。

上記と同じ構造に従い、代わりにDataReader以外のものを使用してこれを実現できますか?

4

1 に答える 1

1

使用している SQL Server のバージョンはわかりませんが、SQL の再帰クエリを調べましたか? 単一の db 呼び出しで階層データを取得するように設計されています。見てみましょう:

http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).aspx

于 2012-08-09T17:23:48.643 に答える