使用强类型数据集,在SqlParameter中加入元列映射。
如:
//经营单位代码 updateHeadCommand.Parameters.Add("@Trade_Code",SqlDbType.NVarChar,10,"Trade_Code");
//企业内部编号 updateHeadCommand.Parameters.Add("@Cop_Ems_No",SqlDbType.NVarChar,20,"Cop_Ems_No");

解决方案 »

  1.   

    先谢谢楼上的各位。。不过我没说的清楚,因为我数据库里的表 ,是在程序运行的时候根据xsd生成的,有很多张表 所以所以不可能针对哪一个表来写存储过程,我的想法是能不能把数据库里的一个表读进datatable里面。 之后把xml里面对应表的各个列排列后,整行整行的插入datatable ,最后再用datatable里面的数据去更新数据库
      

  2.   

    你如果想把数据先做成XML再倒入DataTable也是可以的
    不过各行各列的关系仍是自己手动写语句处理 这个是无可厚非啊
      

  3.   

    我把代码贴出来大家帮我看看 
    treeView1是根据物理表和xml表生成的树,父节点是表名,子节点是列名,
    每个节点的text属性是xml里面的表和列名 tag属性是数据库里面对应的表名和列名,
    foreach(TreeNode p in treeView1.Nodes)
    {
    DataSet xmlds=new DataSet();
    xmlds.ReadXml(_myfile);
    Hashtable setting =new Hashtable();
    setting.Add("mysqlstring","select * from "+p.Tag.ToString().Trim());
    DataSet myds =DataStorage.Instance().Load("CreateTable",setting);
    DataRow myrow =myds.Tables[0].NewRow();
    foreach(DataRow prow in xmlds.Tables[p.Text.Trim()].Rows)
    {
    foreach(TreeNode myp in p.Nodes)
    {
    myrow[myp.Tag.ToString().Trim()]=prow[myp.Text.Trim()];

    }
    myrow["projectid"]=11;
    myds.Tables[p.Tag.ToString().Trim()].Rows.Add(myrow);
    }
    }我现在碰到的问题就是,myrow的数据老是写不进,myrow[myp.Tag.ToString().Trim()]=prow[myp.Text.Trim()];问题应该在这段代码上。大家帮我看看怎么改好
      

  4.   

    foreach(DataRow prow in xmlds.Tables[p.Text.Trim()].Rows)
    {
    myrow.BeginEdit();
    foreach(TreeNode myp in p.Nodes)
    {
    myrow[myp.Tag.ToString().Trim()]=prow[myp.Text.Trim()];

    }
    myrow["projectid"]=11;
    myrow.EndEdit();
    myds.Tables[p.Tag.ToString().Trim()].Rows.Add(myrow);
    }
    不知道行不行,你试试吧
      

  5.   

    楼上的我试过了 还是不行啊。。刚我看了下。。
    myrow里面没数据
      

  6.   


    DataRow myrow =myds.Tables[0].NewRow();
    放到中间那个foreach中第一行呢?
      

  7.   

    还是不行。运行到
    myds.Tables[p.Tag.ToString().Trim()].Rows.Add(myrow);
    这里就出错。提示 未将对象引用设置到对象的实例。