我要实现的功能是这样的,在数据添加到数据库前,要对数据库进行多次查询,得到多个参数.然后再添加到数据库里.现在我主要遇到的问题是:不知道怎么进行多次查询得到相应的各个参数?请大家帮帮忙...有点急

解决方案 »

  1.   

    select ;select;select;select
    dataset
      

  2.   

    你可以自己写嵌套的SQL语句来实现!!!!
    如果简单一个SQL语句也可以吧!!!
      

  3.   

    你的选项:
    1. 写存储过程来实现, 调用存储过程来搞定
    2. 直接写sql文, 在一个事务里, 写N条sql, 检索出各个参数, 赋给变量, 在把变量的值写入数据库
    3. 直接写sql文, 一条sql文里包含对各个参数的检索和添加
      

  4.   

    sub ClassAdd(reclassnameeng,reclassconeng,Tablename,Reparentid,Claname,ClassContent,Classid,Parentid,Parentpath,Classname,Classcon,Child,Nextid,Previd,Depth,Rootid,Orderid,classnameeng,classconeng)
    dim sql,rs,trs
    dim ParentDepth,ReParentPath,ParentName,MaxClassID,MaxRootID,PrevOrderID,ReChild,ReClassid,ReRootID,Reprevid'response.Write Tablename&conn&classid
    'response.End()
        if reParentID="" then
      reParentID=0
        else
      reParentID=CLng(reParentID)
        end if if ClaName="" then
    FoundErr=True
    response.Write"<script language='javascript'>alert('栏目名称不能为空!');history.back();</script>"
    response.End()
    end if
    if FoundErr=True then
    exit sub
    end if set rs = Conn.execute("select Max("&ClassID&") From "&tablename&"")
    MaxClassID=rs(0)
    if isnull(MaxClassID) then
    MaxClassID=0
    end if
    rs.close
    ReClassID=MaxClassID+1
    set rs=Conn.execute("select max("&rootid&") From "&Tablename&"")
    MaxRootID=rs(0)
    if isnull(MaxRootID) then
    MaxRootID=0
    end if
    rs.close
    ReRootID=MaxRootID+1

    if ReParentID>0 then
    sql="select * From "&Tablename&" where "&classid&"=" & ReParentID & ""
    rs.open sql,conn,1,1
    if rs.bof and rs.eof then
    FoundErr=True
    response.Write"<script language='javascript'>alert('所属栏目已经被删除!');history.back();</script>"
        response.End()
    end if
    if FoundErr=True then
    rs.close
    set rs=nothing
    exit sub
    else
    ReRootID=rs(""&RootID&"")
    ParentName=rs(""&ClassName&"")
    ParentDepth=rs(""&Depth&"")
    reParentPath=rs(""&ParentPath&"")
    ReChild=rs(""&Child&"")
    reParentPath=reParentPath & "," & reParentID     '得到此栏目的父级栏目路径
    PrevOrderID=rs(""&OrderID&"")
    if ReChild>0 then
    dim rsPrevOrderID
    '得到与本栏目同级的最后一个栏目的OrderID
    set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentID&"=" & reParentID)
    PrevOrderID=rsPrevOrderID(0)
    set trs=conn.execute("select "&classID&" from "&Tablename&" where "&ParentID&"=" & reParentID & " and "&OrderID&"=" & PrevOrderID)
    RePrevID=trs(0)
    'PrevorderID=PrevOrderID+1
    '得到同一父栏目但比本栏目级数大的子栏目的最大OrderID,如果比前一个值大,则改用这个值。
    set rsPrevOrderID=conn.execute("select Max("&OrderID&") From "&Tablename&" where "&ParentPath&" like '" & reParentPath & ",%'")
    if (not(rsPrevOrderID.bof and rsPrevOrderID.eof)) then
    if not IsNull(rsPrevOrderID(0))  then
      if rsPrevOrderID(0)>PrevOrderID then
    PrevOrderID=rsPrevOrderID(0)
    end if
    end if
    end if
    else
    RePrevID=0
    end if end if
    rs.close
    else
    if MaxRootID>0 then  '已经存在一级栏目
    set trs=conn.execute("select "&classid&" from "&Tablename&" where "&RootID&"=" & MaxRootID & " and "&Depth&"=0")
    RePrevID=trs(0)
    trs.close
    else
    RePrevID=0
    end if
    PrevOrderID=0
    reParentPath="0"
    end if sql="Select * From "&Tablename&" Where "&ParentID&"=" & reParentID & " AND "&ClassName&"='" & ClaName & "'"
    set rs=server.CreateObject("adodb.recordset")
    rs.open sql,conn,1,1
    if not(rs.bof and rs.eof) then
    FoundErr=True
    if reParentID=0 then
    response.Write"<script language='javascript'>alert('该一级栏目已存在!请重新填写!');history.back();</script>"
    response.End()
    else
    msg= ParentName & "中已经存在子栏目" & ClaName
    strJS="<SCRIPT language='javascript'>" & vbcrlf
    strJS=strJS & "alert('" & msg & "');" & vbcrlf
    strJS=strJS & "history.back();" & vbcrlf
    strJS=strJS & "</script>"
           response.write strJS
    response.End()
    end if
    rs.close
    set rs=nothing
    exit sub
    end if
    rs.close sql="Select * From "&Tablename&""
    rs.open sql,conn,1,3
        rs.addnew
    rs(""&classnameeng&"")=reclassnameeng
    rs(""&classconeng&"")=reclassconeng
    rs(""&ClassID&"")=ReClassID
        rs(""&ClassName&"")=ClaName
    rs(""&RootID&"")=ReRootID
    rs(""&ParentID&"")=ReParentID
    if ReParentID>0 then  '不是一级栏目的情况下
    rs(""&Depth&"")=ParentDepth+1
    else
    rs(""&Depth&"")=0
    end if
    rs(""&classcon&"")=ClassContent
    rs(""&ParentPath&"")=reParentPath
    rs(""&OrderID&"")=PrevOrderID
    rs(""&Child&"")=0
    rs(""&PrevID&"")=RePrevID
    rs(""&NextID&"")=0
    rs.update
    rs.Close
        set rs=Nothing

    '更新与本栏目同一父栏目的上一个栏目的“NextID”字段值
    if cint(rePrevID)>0 then
    conn.execute("update "&Tablename&" set "&NextID&"=" & ReClassID & " where "&classID&"=" & cint(RePrevID))
    end if

    if ReParentID>0 then
    '更新其父类的子栏目数
    conn.execute("update "&Tablename&" set "&child&"="&child&"+1 where "&classID&"="&ReParentID)
        '更新该栏目排序以及大于本需要和同在本分类下的栏目排序序号
    conn.execute("update "&Tablename&" set "&OrderID&"="&OrderID&"+1 where "&rootid&"=" & rerootid & " and "&OrderID&">" & PrevOrderID)
    conn.execute("update "&Tablename&" set "&OrderID&"=" & PrevOrderID & "+1 where "&classID&"=" & reClassID)
    end if
    end sub
    上面是我asp的代码,我想把他转化为asp.net的.