向表追加另一表表信息

 表结构

a1

a  b   c

-----------

1  aa  0

2  bb  1

3  cc   1

4   dd  2

5  ee   2

6   ff   2

---------------------

b1表

e     f     g

01    ad  0

02   ac   01

03   ac   01

04   ac   02

 

05   ac   02

 

a1表成效果:

a  b   c

-----------

1  aa  0

2  bb  1

3  cc   1

4   dd  2

5  ee   2

6   ff   2

7    ad  0

8   ac   7

9   ac   7

10   ac   8

 

11   ac   8

 

-------------------------------------------------------------------------

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;

public partial class _Default : System.Web.UI.Page
{
   
    protected void Page_Load(object sender, EventArgs e)
    {
        //Session["pNode"] = System.Configuration.ConfigurationManager.ConnectionStrings["pnod"].ToString(); //预设置pid
        Session["outTable"] = System.Configuration.ConfigurationManager.ConnectionStrings["tblname"].ToString();//输出表
        Session["filed_id"] = System.Configuration.ConfigurationManager.ConnectionStrings["filed_id"].ToString();//自动增长列
        Session["filed_pid"] = System.Configuration.ConfigurationManager.ConnectionStrings["filed_pid"].ToString();//父ID
        Session["filed_name"] = System.Configuration.ConfigurationManager.ConnectionStrings["filed_name"].ToString();//文本名称
        Session["outpid"] = System.Configuration.ConfigurationManager.ConnectionStrings["outpid"].ToString();//预计设置父输出表ID
        Session["inpid"] = System.Configuration.ConfigurationManager.ConnectionStrings["inpid"].ToString();//预计设置父输入表ID
       
        if (!IsPostBack)
        {  
            BindNodeLeft();
            BindNodeRight();
        }

    }
  
#region 导出数据表绑定
    /// <summary>
    /// 绑定左侧导出数据表
    /// </summary>
    private void BindNodeLeft()
    {
      
        string strsql = "select * from " + Session["outTable"].ToString() + " where 1=1";
       
        if (!IsPostBack)
        {
            strsql += " and  " + Session["filed_pid"].ToString() + "='" + Session["outpid"].ToString() + "'";
            DataTable dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string strText = dt.Rows[i][Session["filed_name"].ToString()].ToString();
                if (strText.Length > 6)
                    strText = strText.Substring(0, 6) + "...";
                TreeNode TN = new TreeNode();
                TN.Text = strText;
                   TN.ToolTip= dt.Rows[i][Session["filed_name"].ToString()].ToString();
                TN.Value = dt.Rows[i][Session["filed_id"].ToString()].ToString();           
                this.TreeView1.Nodes.Add(TN);
                this.TreeView1.ShowExpandCollapse = true;
                this.TreeView1.ExpandAll();
                BindLeftNodes(TN);
            }
        }
    }
    /// <summary>
    /// 递归目录节点
    /// </summary>
    /// <param name="tn"></param>
    private void BindLeftNodes(TreeNode tn)
    {
        string pid = tn.Value;

        string strsql = "select * from " + Session["outTable"].ToString() + " where 1=1 and  " + Session["filed_pid"].ToString() + "='" + tn.Value + "'";
        DataTable dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
        for (int i = 0; i < dt.Rows.Count; i++)
        {

            string strText = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            if (strText.Length > 6)
                strText = strText.Substring(0, 6) + "...";

            TreeNode tnn = new TreeNode();
            tnn.ToolTip = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            tnn.Text = strText;
            tnn.Value = dt.Rows[i][Session["filed_id"].ToString()].ToString();
            tn.ChildNodes.Add(tnn);
            BindLeftNodes(tnn);
        }
    }  
    #endregion
 
#region 绑定右侧导入目录树
    /// <summary>
    /// 绑定右侧导入目录树
    /// </summary>
    private void BindNodeRight()
    {
        string strsql = "select * from " + Session["inTable"].ToString() + " where 1=1 and  " + Session["filed_pid"].ToString() + "='" + Session["inpid"].ToString() + "'";
        DataTable dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            string strText = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            if (strText.Length > 6)
                strText = strText.Substring(0, 6) + "...";

            TreeNode TN = new TreeNode();
            TN.ToolTip = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            TN.Text = strText;//dt.Rows[i][Session["filed_name"].ToString()].ToString();
            TN.Value = dt.Rows[i][Session["filed_id"].ToString()].ToString();
            //TN.Target = dt.Rows[i][2].ToString();
            this.TreeView2.Nodes.Add(TN);
            BindNode(TN);
            this.TreeView2.ShowExpandCollapse = true;
            this.TreeView2.ExpandAll();

        }
    }
    /// <summary>
    /// 递归目录节点
    /// </summary>
    /// <param name="tn"></param>
    private void BindNode(TreeNode tn)
    {
        string pid = tn.Value;

        string strsql = "select * from " + Session["inTable"].ToString() + " where 1=1 and  " + Session["filed_pid"].ToString() + "='" + tn.Value + "'";
        DataTable dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            string strText = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            if (strText.Length > 6)
                strText = strText.Substring(0, 6) + "...";

            TreeNode tnn = new TreeNode();
            tnn.Text = strText;
            tnn.ToolTip = dt.Rows[i][Session["filed_name"].ToString()].ToString();
            tnn.Value = dt.Rows[i][Session["filed_id"].ToString()].ToString();
            //tnn.Target = dt.Rows[i][2].ToString();
            tn.ChildNodes.Add(tnn);

            BindNode(tnn);

        }
    }

  #endregion

   

    #region 向数据库插入数据方法1
    private void DBind(string pid)
    {
        DataTable dt;
        string strsql = "select * from " + Session["outTable"].ToString() + " where " + Session["filed_id"].ToString() + "=" + pid;
        dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
        if (dt.Rows.Count > 0)
        {
           // strsql = "insert into " + Session["inTable"].ToString() + " (name,parent_id)values('" + dt.Rows[0]["name"].ToString() + "'," + Session["pNode"].ToString() + ")";

            string sqlfield = "";
            string sqlvalues = "";

            strsql = "insert into " + Session["inTable"].ToString() + " (";
            for (int i = 0; i < dt.Columns.Count; i++)
            {

                if (dt.Rows[0][i].ToString() != "" && dt.Columns[i].ColumnName.ToLower() != Session["filed_id"].ToString() && dt.Columns[i].ColumnName.ToLower() != Session["filed_pid"].ToString())
                {
                    sqlfield += dt.Columns[i].ColumnName + ",";
                    sqlvalues += "'" + dt.Rows[0][i].ToString() + "',";
                }
            }
            sqlfield += Session["filed_pid"].ToString();
            sqlvalues += Session["pNode"].ToString();
            strsql += sqlfield + ") values(" + sqlvalues + ")";

            new cc.DBHepler().RunSqlRetNull(strsql, CommandType.Text, null, null);//插入第一条数据


            strsql = "select max(" + Session["filed_id"].ToString() + ") from " + Session["inTable"].ToString();
            Session["num"] = null;
            Session["num"] = new cc.DBHepler().RunSqlRetObj(strsql, CommandType.Text, null, null).ToString();//得到被插入表最大ID

            strsql = "select * from " + Session["outTable"].ToString() + " where " + Session["filed_pid"].ToString() + "=" + pid;
            dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
              //  strsql = "insert into " + Session["inTable"].ToString() + " (name," + Session["filed_pid"].ToString() + ")values('" + dt.Rows[i]["name"].ToString() + "'," + Session["num"].ToString() + ")";
              
                sqlfield = "";
                sqlvalues = "";
                strsql = "insert into " + Session["inTable"].ToString() + " (";
                for (int num = 0; num < dt.Columns.Count; num++)
                {

                    if (dt.Rows[i][num].ToString() != "" && dt.Columns[num].ColumnName.ToLower() != Session["filed_id"].ToString() && dt.Columns[num].ColumnName.ToLower() != Session["filed_pid"].ToString())
                    {
                        sqlfield += dt.Columns[num].ColumnName + ",";
                     
                    }
                 
                }
                sqlfield += Session["filed_pid"].ToString();
                   
                for (int num1 = 0; num1 < dt.Columns.Count; num1++)
                {
                    if (dt.Rows[i][num1].ToString() != "" && dt.Columns[num1].ColumnName.ToLower() != Session["filed_id"].ToString() && dt.Columns[num1].ColumnName.ToLower() != Session["filed_pid"].ToString())
                    {
                     
                        sqlvalues += "'" + dt.Rows[i][num1].ToString() + "',";
                    }               
                }
                sqlvalues += Session["num"].ToString();                  
                strsql += sqlfield + ") values(" + sqlvalues + ")";           
                new cc.DBHepler().RunSqlRetNull(strsql, CommandType.Text, null, null);//插入下级数据
            }

        }
    }
    #endregion

    #region 向数据库插入数据方法2
  
    private void DataShow()
    {
        ArrayList al = new ArrayList();
        ArrayList al1 = new ArrayList();
        ArrayList al2 = new ArrayList();

        string strsql;
        DataTable dt;
        #region 插入操作
        string idd = Session["id"].ToString();
 
        strsql = "select * from " + Session["outTable"].ToString() + " where " + Session["filed_id"].ToString() + " =" + idd;
        dt=new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
        for (int s = 0; s < dt.Rows.Count; s++)
        {
            object obj = dt.Rows[s][Session["filed_id"].ToString()].ToString();
            al.Add(obj);          
        }
        strsql = "select * from " + Session["outTable"].ToString() + " where " + Session["filed_pid"].ToString() + " =" + idd;
       
        dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];

        for (int s = 0; s < dt.Rows.Count; s++)
        {
            object obj = dt.Rows[s][Session["filed_id"].ToString()].ToString();
            al.Add(obj);
            if (s == 0)
            {
                Session["BasePid"] = dt.Rows[s][Session["filed_pid"].ToString()].ToString();
                Session["Baseid"] = dt.Rows[s][Session["filed_id"].ToString()].ToString();
            }
            DBindID(al, obj);
        }
        string strFilter = "";
        foreach (object obj in al)
        {
           strFilter+=obj.ToString()+",";
        }
        if (strFilter.IndexOf(",")!=-1)
        strFilter = strFilter.Substring(0, strFilter.Length - 1);
        System.Data.SqlClient.SqlParameter[] sParams1 = new System.Data.SqlClient.SqlParameter[]{
                        new cc.DBHepler().MakeParam("@tabName", SqlDbType.VarChar,50, ParameterDirection.Input,Session["outTable"].ToString()),
                        new cc.DBHepler().MakeParam("@Filter", SqlDbType.VarChar,3000, ParameterDirection.Input,strFilter),
                        new cc.DBHepler().MakeParam("@fid",SqlDbType.VarChar,50, ParameterDirection.Input,Session["filed_id"].ToString()), 
                        new cc.DBHepler().MakeParam("@fpid",SqlDbType.VarChar,50,ParameterDirection.Input,Session["filed_pid"].ToString())                      
                };
        dt = new cc.DBHepler().RunSql("proc_sel", CommandType.StoredProcedure, null, sParams1).Tables[0];

 

      

        for (int j = 0; j < dt.Rows.Count; j++)
        {
            object obj = null;
            #region 拼接SQL语句


            string sqlfield = "";
            string sqlvalues = "";
            strsql = "";
            //strsql = "insert into " + Session["inTable"].ToString() + " (";
            for (int num = 0; num < dt.Columns.Count; num++)
            {

                if (dt.Rows[j][num].ToString() != "" && dt.Columns[num].ColumnName.ToLower()!=Session["filed_id"].ToString())
                {
                    sqlfield += dt.Columns[num].ColumnName + ",";

                }


            }

            for (int num1 = 0; num1 < dt.Columns.Count; num1++)
            {
                if (dt.Rows[j][num1].ToString() != "" && dt.Columns[num1].ColumnName.ToLower()!=Session["filed_id"].ToString())
                {

                    sqlvalues += "'" + dt.Rows[j][num1].ToString() + "',";
                }

                if (dt.Columns[num1].ColumnName.ToLower().Equals(Session["filed_id"]))
                {

                    Session["id"] = dt.Rows[j][num1].ToString();
                }

                if (dt.Columns[num1].ColumnName.ToLower().Equals(Session["filed_pid"].ToString()))
                {

                    Session["pidvalue"] = dt.Rows[j][num1].ToString();
                }

            }
            strsql += "(" + sqlfield.Substring(0, sqlfield.Length - 1) + ") values(" + sqlvalues.Substring(0, sqlvalues.Length - 1).ToString() + ")";//拼接insert sql语句

            #endregion
            #region 执行插入,返回插入的ID和被插入的ID并存储到相应的al1和al2数组
            try
            {

                System.Data.SqlClient.SqlParameter[] sParams = new System.Data.SqlClient.SqlParameter[]{
                        new cc.DBHepler().MakeParam("@tabName", SqlDbType.VarChar,50, ParameterDirection.Input,Session["inTable"]),
                        new cc.DBHepler().MakeParam("@Filter1", SqlDbType.VarChar,3000, ParameterDirection.Input,strsql),
                        new cc.DBHepler().MakeParam("@fid",SqlDbType.VarChar,50, ParameterDirection.Input,Session["filed_id"]), 
                        new cc.DBHepler().MakeParam("@fpid",SqlDbType.VarChar,50,ParameterDirection.Input,Session["filed_pid"]),                      
                        new cc.DBHepler().MakeParam("@pid",SqlDbType.VarChar,50,ParameterDirection.Input,Session["pidvalue"])
                };
                obj = new cc.DBHepler().RunSqlRetObj("proc_insert", CommandType.StoredProcedure, null, sParams);

            }
            catch (Exception ex)
            {
                Response.Write(ex.Message + "<hr/>");

            }
            #endregion

            al1.Add(obj);
            al2.Add(dt.Rows[j][Session["filed_id"].ToString()]);

        }

        #region 更新操作
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            try
            {
                int iii1 = Convert.ToInt32(dt.Rows[i]["pid"]);
                int iii = al2.IndexOf(iii1);
                if (iii != -1)
                {
                    string ii = al1[al2.IndexOf(iii1)].ToString();
                    string strqq = al1[i].ToString();
                    //id=strqq,
                    //pid=ii,
                    //name=ds.table[0]

                    System.Data.SqlClient.SqlParameter[] sParams2 = new System.Data.SqlClient.SqlParameter[]{
                        new cc.DBHepler().MakeParam("@tabName", SqlDbType.VarChar,50, ParameterDirection.Input,Session["inTable"].ToString()),
                        new cc.DBHepler().MakeParam("@fid", SqlDbType.VarChar,3000, ParameterDirection.Input,Session["filed_id"].ToString()),
                        new cc.DBHepler().MakeParam("@fpid",SqlDbType.VarChar,50, ParameterDirection.Input,Session["filed_pid"].ToString()), 

                        new cc.DBHepler().MakeParam("@id",SqlDbType.VarChar,4,ParameterDirection.Input,strqq),     //id值                 
                        new cc.DBHepler().MakeParam("@pid",SqlDbType.VarChar,4,ParameterDirection.Input,ii)//pid值

                    };
                    new cc.DBHepler().RunSqlRetNull("proc_update", CommandType.StoredProcedure, null, sParams2);

                  

                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }
        #endregion


        int ss = int.Parse(Session["Baseid"].ToString());
        int sso = 0;
        if (al2.IndexOf(ss) > 0)
            sso = al2.IndexOf(ss) - 1;
        string strobj1 = al1[sso].ToString();
        string oo = Session["pNode"].ToString();

        //更新基类节点PID
        System.Data.SqlClient.SqlParameter[] sParams3 = new System.Data.SqlClient.SqlParameter[]{
            new cc.DBHepler().MakeParam("@tabName", SqlDbType.VarChar,50, ParameterDirection.Input,Session["inTable"].ToString()),
            new cc.DBHepler().MakeParam("@fid", SqlDbType.VarChar,3000, ParameterDirection.Input,Session["filed_id"].ToString()),
            new cc.DBHepler().MakeParam("@fpid",SqlDbType.VarChar,50, ParameterDirection.Input,Session["filed_pid"].ToString()), 
            new cc.DBHepler().MakeParam("@id",SqlDbType.VarChar,4,ParameterDirection.Input,strobj1),     //id值                 
            new cc.DBHepler().MakeParam("@pid",SqlDbType.VarChar,4,ParameterDirection.Input,Session["pNode"])//pid值


        };
        new cc.DBHepler().RunSqlRetNull("proc_update", CommandType.StoredProcedure, null, sParams3);

        #endregion

    }
    private void DBindID(ArrayList al, object id)
    {
        string strsql2 = "select distinct * from " + Session["outTable"].ToString() + " where " + Session["filed_pid"] + " =" + id;
        DataTable dtt;
        dtt = new cc.DBHepler().RunSql(strsql2, CommandType.Text, null, null).Tables[0];
        for (int s = 0; s < dtt.Rows.Count; s++)
        {
            object obj = dtt.Rows[s][Session["filed_id"].ToString()].ToString();
            al.Add(obj);
            DBindID(al, obj);
        }

    }
     
    #endregion

    #region 执行操作
    /// <summary>
    /// 执行操作
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Button1_Click(object sender, EventArgs e)
    {

        this.lit.Text = "";
        Session["pNode"] = Session["to"].ToString();
      
      DataShow();

      // DBind(Session["id"].ToString());
        TreeView2.Nodes.Clear();
        BindNodeRight();


    }
    #endregion
    protected void TreeView1_PreRender(object sender, EventArgs e)
    {
        this.TreeView1.ShowLines = true;
        this.TreeView1.AccessKey = "T";
        this.TreeView1.NodeIndent = 4;
        this.TreeView1.NodeWrap = false;     
    }
    protected void TreeView1_Init(object sender, EventArgs e)
    {
       
        this.TreeView1.ShowExpandCollapse = true;

    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
         Session["id"] = this.TreeView1.SelectedNode.Value;
        Session["name"] = this.TreeView1.SelectedNode.ToolTip;
       this.Label3.Text = "[<font color='red'> "+Session["name"].ToString()+"</font> ]";
    }
    protected void Button2_Click(object sender, EventArgs e)
    {

 

    }
    protected void TreeView2_Init(object sender, EventArgs e)
    {
        this.TreeView2.ShowExpandCollapse = true;
      //  this.TreeView2.ExpandAll();

    }
    protected void TreeView2_PreRender(object sender, EventArgs e)
    {
        this.TreeView2.ShowLines = true;
        this.TreeView2.AccessKey = "T";
        this.TreeView2.NodeIndent = 4;
        this.TreeView2.NodeWrap = false;
    }
    protected void TreeView2_SelectedNodeChanged(object sender, EventArgs e)
    {
       this.Label2.Text="[<font color=red>"+ this.TreeView2.SelectedNode.Text+"</font>] 节点下...";
       Session["to"] = this.TreeView2.SelectedNode.Value;
    }  
}

-------------------------------------------------------------------------------------------------------------

 没有成功!换个试试!!

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Data.SqlClient;

namespace cc
{
    /// <summary>
    /// Class1 的摘要说明
    /// </summary>
    public class Class1
    {
        public Class1()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }


        private static void SelChildNode(string fromID, string outTableName, string inTableName,
            string PidFiledName, string IdFiledName,
            ArrayList al_old_id, ArrayList al_old_pid, ArrayList al_New_ID)
        {
            string strsql = "select * from " + outTableName + " where " + PidFiledName + "=" + fromID;
            DataTable dt = new cc.DBHepler().RunSql(strsql,CommandType.Text,null,null).Tables[0];
            for (int num2 = 0; num2 < dt.Rows.Count; num2++)
            {
                al_old_id.Add(dt.Rows[num2][IdFiledName]);
                al_old_pid.Add(dt.Rows[num2][PidFiledName]);

                string strFilter = "";
                string strFiled = "";
                string strValue = "";
                for (int colnum = 0; colnum < dt.Columns.Count; colnum++)
                {

                    if (dt.Rows[num2][colnum] != null && !dt.Columns[colnum].ColumnName.ToLower().Equals(IdFiledName))
                    {
                        strFiled += dt.Columns[colnum].ColumnName + ",";
                        strValue += "'" + dt.Rows[num2][colnum] + "',";
                    }
                }
                if (strFiled.Length > 0 && strValue.Length > 0)
                {
                    strFilter = "(" + strFiled.Substring(0, strFiled.Length - 1) + ") values(" + strValue.Substring(0, strValue.Length - 1) + ")";
                    SqlParameter[] strparams1 = new SqlParameter[] {                
                    new cc.DBHepler().MakeParam("@tabName",SqlDbType.Char,50,ParameterDirection.Input,inTableName),
                    new cc.DBHepler().MakeParam("@Filter1",SqlDbType.Char,3000,ParameterDirection.Input,strFilter)
                 };

                    object newID = new cc.DBHepler().RunSqlRetObj("proc_insert", CommandType.StoredProcedure, null, strparams1);
                    al_New_ID.Add(newID);
              
                SelChildNode(dt.Rows[num2][IdFiledName].ToString(), outTableName, inTableName, PidFiledName, IdFiledName, al_old_id, al_old_pid, al_New_ID);
            }
            }

        }

        public static void InsertAndUpdateData(string outTableName,string inTableName,string IdFiledName,string fromID,string inID,string PidFiledName)
        {
            string strsql = "";
            object objMax = null;
            ArrayList al_Old_ID = new ArrayList();//旧ID
            ArrayList al_Old_PID = new ArrayList();//旧Pid
            ArrayList al_New_ID = new ArrayList();//新ID

            #region 父节点操作全过程
            strsql = "select * from " + outTableName + " where " + IdFiledName + "=" + fromID;
            DataTable dt;
            dt = new cc.DBHepler().RunSql(strsql,CommandType.Text,null,null).Tables[0];
            /*-----------------------------完成插入--------------------------------*/

            for (int num3 = 0; num3 < dt.Rows.Count; num3++)
            {
                string strFiled = "";
                string strValue = "";
                for (int colnum = 0; colnum < dt.Columns.Count; colnum++)
                {
                    if (dt.Rows[num3][colnum] != null && !dt.Columns[colnum].ColumnName.ToLower().Equals(IdFiledName))
                    {
                        strFiled += dt.Columns[colnum].ColumnName + ",";
                        strValue += "'" + dt.Rows[num3][colnum] + "',";
                    }
                }
                string strFilter = "";
                if(strFiled.Length>0&&strValue.Length>0)
                    strFilter = "(" + strFiled.Substring(0, strFiled.Length - 1) + ") values(" + strValue.Substring(0, strValue.Length - 1) + ")";

                SqlParameter[] strparams1 = new SqlParameter[] {                
                    new cc.DBHepler().MakeParam("@tabName",SqlDbType.Char,50,ParameterDirection.Input,inTableName),
                    new cc.DBHepler().MakeParam("@Filter1",SqlDbType.Char,3000,ParameterDirection.Input,strFilter)
                 };
                objMax = new cc.DBHepler().RunSqlRetObj("proc_insert", CommandType.StoredProcedure, null, strparams1);
            }
           

         
            /*-----------------------------完成更新--------------------------------*/


            SqlParameter[] straparams = new SqlParameter[] {
                new cc.DBHepler().MakeParam("@tabName",SqlDbType.Char,50,ParameterDirection.Input,inTableName),
                new cc.DBHepler().MakeParam("@fid",SqlDbType.Char,50, ParameterDirection.Input,IdFiledName),
                new cc.DBHepler().MakeParam("@fpid",SqlDbType.Char,50, ParameterDirection.Input,PidFiledName),
                new cc.DBHepler().MakeParam("@id", SqlDbType.Char,4, ParameterDirection.Input,objMax),
                new cc.DBHepler().MakeParam("@pid", SqlDbType.Char,4, ParameterDirection.Input,inID)
            };

            new cc.DBHepler().RunSqlRetNull("proc_update", CommandType.StoredProcedure, null, straparams);
            /*------------------------------------------------------------------------*/

            #endregion


            #region 获取要添加的所有旧ID,旧FID以及添加后的新ID
            strsql = "select * from "+outTableName+" where "+PidFiledName+"="+fromID;
            dt = new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null).Tables[0];
            for (int num2 = 0; num2 < dt.Rows.Count; num2++)
            {
                al_Old_ID.Add(dt.Rows[num2][IdFiledName]);
                al_Old_PID.Add(dt.Rows[num2][PidFiledName]);
                string strFiled = "";
                string strValue = "";
                for (int colnum = 0; colnum < dt.Columns.Count; colnum++)
                {
                    if (dt.Rows[num2][colnum] != null && !dt.Columns[colnum].ColumnName.ToLower().Equals(IdFiledName))
                    {
                        strFiled += dt.Columns[colnum].ColumnName + ",";
                        strValue += "'" + dt.Rows[num2][colnum] + "',";
                    }
                }
                string strFilter="";
                strFilter = "(" + strFiled.Substring(0, strFiled.Length - 1) + ") values(" + strValue.Substring(0, strValue.Length - 1) + ")";

                SqlParameter[] strparams1 = new SqlParameter[] {                
                    new cc.DBHepler().MakeParam("@tabName",SqlDbType.Char,50,ParameterDirection.Input,inTableName),
                    new cc.DBHepler().MakeParam("@Filter1",SqlDbType.Char,3000,ParameterDirection.Input,strFilter)
                 };
                string fromID1 = dt.Rows[num2][IdFiledName].ToString();
                object newID = new cc.DBHepler().RunSqlRetObj("proc_insert", CommandType.StoredProcedure, null, strparams1);
                al_New_ID.Add(newID);

                SelChildNode(fromID1, outTableName, inTableName, PidFiledName, IdFiledName, al_Old_ID, al_Old_PID, al_New_ID);
            }
            #endregion

            #region 完成更新操作
            //foreach (object Old_PID in al_Old_PID)
            //{
                for (int num4 = 0; num4 < al_Old_PID.Count;num4++ )
                {


                    if (al_Old_ID.IndexOf(al_Old_PID[num4]) != -1)
                    {
                        object NEW_PID = al_New_ID[al_Old_ID.IndexOf(al_Old_PID[num4])].ToString();
                        object NEW_ID = al_New_ID[num4].ToString();

                        strsql = "update " + inTableName + " set " + PidFiledName + "='" + NEW_PID + "' where " + IdFiledName + "='" + NEW_ID + "'";
                        new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null);
                    }
                    else
                    {
                        object NEW_ID = al_New_ID[num4].ToString();

                        strsql = "update " + inTableName + " set " + PidFiledName + "='" + objMax + "' where " + IdFiledName + "='" + NEW_ID + "'";
                        new cc.DBHepler().RunSql(strsql, CommandType.Text, null, null);
                    }

                }

            //}
            #endregion


        }

 

    }

}

 

 

 

posted @ 2010-02-07 18:24  】Richard【  阅读(404)  评论(0)    收藏  举报