如何由SQL的数据表生成XML,更新XML后再保存回SQL数据表

解决方案 »

  1.   

    --生成XML
    select * From sysobjects for xml auto--================================================
    --导入XML
    DECLARE @idoc int  
    DECLARE @doc varchar(1000)  
    --sample XML document  
    SET @doc ='  
    <root>  
    <Customer cid= "C1" name="Janine" city="Issaquah">  
    <Order oid="O1" date="1/20/1996" amount="3.5" />  
    <Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied  
    </Order>  
    </Customer>  
    <Customer cid="C2" name="Ursula" city="Oelde" >  
    <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue 
    white red">  
    <Urgency>Important</Urgency>  
    Happy Customer.  
    </Order>  
    <Order oid="O4" date="1/20/1996" amount="10000"/>  
    </Customer>  
    </root>  
    '  
    -- Create an internal representation of the XML document.  
    EXEC sp_xml_preparedocument @idoc OUTPUT, @doc  -- Execute a SELECT statement using OPENXML rowset provider.  
    SELECT *  
    FROM OPENXML (@idoc, '/root/Customer/Order', 1)  
    WITH (oid char(5),   
    amount float,   
    comment ntext 'text()')  
    EXEC sp_xml_removedocument @idoc
      

  2.   

    谢jxnetinfo(开心一聊)的回答
    但是导入的时候能否是一个XML文件
    我的想法是在WEB上用XML作为临时存储数据,当录入完数据后再一次性的保存到SQL SERVER上!
      

  3.   

    string diffGramXsd = Application.StartupPath + "\\diffGram.xsd";
    string diffGramXml = Application.StartupPath + "\\diffGram.xml";
    DataSet ds = new DataSet("XmlProduct") ;
        ConnDB dbConn = new ConnDB() ;
    SqlDataAdapter da = new SqlDataAdapter("select * from T_Product",dbConn.Conn) ;
    da.Fill(ds,"Product") ;
    ///Edit first Row
    ds.Tables["Product"].Rows[0]["Cate_id"] = "NewCate_id" ;
    ///Add a new Row
    DataRow dr = ds.Tables["Product"].NewRow() ;
    dr["Cate_id"] = 00011 ;
    dr["Sku_id"] = 10020 ;
    dr["Sku_Desc"] = "Test sku" ;
    ds.Tables["Product"].Rows.Add(dr) ;

    ///Generate xsd and xml file
        ds.WriteXmlSchema(diffGramXsd);
    ds.WriteXml(diffGramXml,XmlWriteMode.DiffGram);
    ds.AcceptChanges() ; //更新数据库
    dataGrid1.DataSource = ds ;
    dataGrid1.DataMember = "Product" ;
    ///Generate XmlDataDocument
    dataDoc = new XmlDataDocument(ds) ;
    XmlNodeList nodeList = dataDoc.SelectNodes("//Cate_id") ;
    foreach(XmlNode node in nodeList)
    {
    listBox1.Items.Add(node.InnerText) ;
    }