首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过调用C#中的存储过程将URL中的xml数据插入Server 2008数据库

如何通过调用C#中的存储过程将URL中的xml数据插入Server 2008数据库
EN

Stack Overflow用户
提问于 2012-05-04 02:58:09
回答 1查看 3.7K关注 0票数 2

我是初学者,我想从Zoho中获取数据,然后通过调用C#中的存储过程将其插入Server数据库

我的方式:

  1. 使用Zoho (运行良好)
  2. 使用XmlDocument从URL加载XML数据(运行良好)

我的代码:

代码语言:javascript
运行
复制
XmlDocument doc = new XmlDocument();
doc.Load("https://crm.zoho.com/crm/private/xml/Accounts/getRecords?newFormat=1&authtoken=mytoken&scope=crmapi&lastModifiedTime=2011-05-27%2000:00:00&fromIndex=1482&toIndex=1682");

现在如何使用存储过程插入数据库?

数据示例:

注: FL元素在每一行中的数目可能不同。

代码语言:javascript
运行
复制
<response uri="/crm/private/xml/Accounts/getRecords">
  <result>
    <Accounts>
      <row no="1">
        <FL val="ACCOUNTID">380198000000068646</FL>
        <FL val="SMOWNERID">380198000000052013</FL>
        <FL val="Account Owner">Mai Tran</FL>
        <FL val="Account Name">Trung Tâm Nghiên Cứu & Phát Triển Chế Biến Dầu Khí</FL>
        <FL val="Website">www.pvpro.com.vn</FL>
        <FL val="Industry">Energy, Oil & Gas</FL>
        <FL val="SMCREATORID">380198000000041003</FL>
        <FL val="Created By">Bach Tran Phuong</FL>
        <FL val="MODIFIEDBY">380198000000041003</FL>
        <FL val="Modified By">Tran Phuong</FL>
        <FL val="Created Time">2011-05-04 09:49:11</FL>
        <FL val="Modified Time">2012-02-24 14:41:48</FL>
        <FL val="Billing Street">4 Nguyen Thong St</FL>
        <FL val="District">Q.3</FL>
        <FL val="City">Hồ Chí Minh</FL>
      </row>
      <row no="2">
        <FL val="ACCOUNTID">380198000000068644</FL>
        <FL val="SMOWNERID">380198000000041003</FL>
        <FL val="Account Owner">Bach Tran Phuong</FL>
        <FL val="Account Name">Tổng Cty Tư Vấn Thiết Kế</FL>
        <FL val="Phone">6297 1778</FL>
        <FL val="SMCREATORID">380198000000041003</FL>
        <FL val="Created By">Bach Tran Phuong</FL>
        <FL val="MODIFIEDBY">380198000000041003</FL>
        <FL val="Modified By">Tran Phuong</FL>
        <FL val="Created Time">2011-05-04 09:49:11</FL>
        <FL val="Modified Time">2012-02-24 14:40:42</FL>
        <FL val="Billing Street">Parkson Tân Sân Nhất</FL>
        <FL val="District">Tân Bình</FL>
        <FL val="City">Hồ Chí Minh</FL>
        <FL val="Alternative Names">PV Engineering</FL>
      </row>
      <row no="3">
        <FL val="ACCOUNTID">380198000000068642</FL>
        <FL val="SMOWNERID">380198000000052015</FL>
        <FL val="Account Owner">Trang Do Thi</FL>
        <FL val="Account Name">CTY TNHH BẢO HIỂM NHÂN THỌ VIỆT NAM</FL>
        <FL val="Phone">9 101 660</FL>
        <FL val="Account Type">Active</FL>
        <FL val="Industry">Financial Services</FL>
        <FL val="SMCREATORID">380198000000041003</FL>
        <FL val="Created By">Bach Tran Phuong</FL>
        <FL val="MODIFIEDBY">380198000000041003</FL>
        <FL val="Modified By">Tran Phuong</FL>
        <FL val="Created Time">2011-05-04 09:49:11</FL>
        <FL val="Modified Time">2012-04-27 11:02:25</FL>
        <FL val="Billing Street"> Tôn Đức Thắng P.Bến Nghé</FL>
        <FL val="Phone 2">9 101 659</FL>
        <FL val="District">Q.1</FL>
        <FL val="City">Hồ Chí Minh</FL>
        <FL val="Key Contact">Duy Nhật</FL>
        <FL val="Partner Type">Loyal Partner</FL>
        <FL val="Collection">1859353554</FL>
        <FL val="Alternative Names">Việt Nam</FL>
      </row>
      <row no="4">
        <FL val="ACCOUNTID">380198000000068638</FL>
        <FL val="SMOWNERID">380198000000052015</FL>
        <FL val="Account Owner">Trang Do Thi</FL>
        <FL val="Account Name">Cty TNHH Gia Dụng Phương Gia</FL>
        <FL val="SMCREATORID">380198000000041003</FL>
        <FL val="Created By">Bach Tran Phuong</FL>
        <FL val="MODIFIEDBY">380198000000041003</FL>
        <FL val="Modified By">Bach Tran Phuong</FL>
        <FL val="Created Time">2011-05-04 09:49:11</FL>
        <FL val="Modified Time">2012-02-24 13:52:25</FL>
        <FL val="Billing Street">Cao Thang</FL>
        <FL val="District">Q.3</FL>
        <FL val="City">Hồ Chí Minh</FL>
        <FL val="Alternative Names">Home Appliances ltd</FL>
      </row>
    </Accounts>
  </result>
</response>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-04 04:52:23

步骤1:创建存储过程:

代码语言:javascript
运行
复制
CREATE PROCEDURE dbo.StoreXmlData (@XmlData XML)
AS BEGIN
    INSERT INTO dbo.YourXmlTable(XmlColumnName)
    VALUES(@XmlData)
END

这假设您在Server 2005或更高版本上,并且将您的XML存储在一个真正属于数据类型XML的列中。根据需要调整表名和列名,以匹配您的情况。

步骤2:从C#中,使用标准的ADO.NET类调用存储过程:

代码语言:javascript
运行
复制
string sqlStmt = "dbo.StoreXmlData";  // name of your stored procedure

// here, you need to use *YOUR* connection string instead of my demo one...    
using(SqlConnection conn = new SqlConnection("server=.;database=test;integrated security=SSPI;"))
using (SqlCommand cmd = new SqlCommand(sqlStmt, conn))
{
    // make sure to tell ADO.NET you're about to call a stored procedure!
    cmd.CommandType = CommandType.StoredProcedure;

    // define the parameter and set its value
    cmd.Parameters.Add("@YourData", SqlDbType.Xml);
    cmd.Parameters["@YourData"].Value = doc.DocumentElement.InnerXml;

    // standard ADO.NET - open connection, execute query, close connection
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
}

真的就这么多了!

更新: XML,因此您希望将分解为单独的列--在这种情况下,您需要在存储过程中执行类似的操作:

代码语言:javascript
运行
复制
CREATE PROCEDURE dbo.StoreXmlData (@XmlData XML)
AS 
BEGIN
    INSERT INTO dbo.YourDataTable(RowNo, AccountID, OwnerID, AccountOwner)
        SELECT
            RowNo = Acc.value('@no', 'int'),
            AccountID = Acc.value('(FL[@val="ACCOUNTID"])[1]', 'nvarchar(50)'),
            OwnerID = Acc.value('(FL[@val="SMOWNERID"])[1]', 'nvarchar(50)'),
            AccountOwner = Acc.value('(FL[@val="Account Owner"])[1]', 'nvarchar(50)')
            -- and so on to grab all the items you need
        FROM
            @XmlData.nodes('/response/result/Accounts/row') AS Resp(Acc)
END
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10442093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档