加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将XML从C#传递到SQL Server 2008中的存储过程?

发布时间:2020-12-16 08:04:12 所属栏目:百科 来源:网络整理
导读:我想把xml文件传给sql server存储过程如下: CREATE PROCEDURE BookDetails_Insert (@xml xml) 我想将一些字段数据与其他表数据进行比较,如果匹配该记录必须插入到表中。 要求: 如何将XML传递到存储过程?我尝试过这个,但是不行:[工作] command.Paramete
我想把xml文件传给sql server存储过程如下:
CREATE PROCEDURE BookDetails_Insert (@xml xml)

我想将一些字段数据与其他表数据进行比较,如果匹配该记录必须插入到表中。

要求:

>如何将XML传递到存储过程?我尝试过这个,但是不行:[工作]

command.Parameters.Add(
    new SqlParameter("@xml",SqlDbType.Xml)
    {
        Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml,XmlNodeType.Document,null))
    });

>如何在存储过程中访问XML数据?

编辑:[工作]

String sql = "BookDetails_Insert";
        XmlDocument xmlToSave = new XmlDocument();
        xmlToSave.Load("C:Documents and SettingsDesktopXML_ReportBooks_1.xml");

        SqlConnection sqlCon = new SqlConnection("...");
        using (DbCommand command = sqlCon.CreateCommand())
        {
            **command.CommandType = CommandType.StoredProcedure;**
            command.CommandText = sql;
            command.Parameters.Add(
              new SqlParameter("@xml",SqlDbType.Xml)
              {
                  Value = new SqlXml(new XmlTextReader(xmlToSave.InnerXml,null))
              });

            sqlCon.Open();
            DbTransaction trans = sqlCon.BeginTransaction();
            command.Transaction = trans;

            try
            {
                command.ExecuteNonQuery();
                trans.Commit();
                sqlCon.Close();
            }
            catch (Exception)
            {
                trans.Rollback();
                sqlCon.Close();
                throw;
            }

编辑2:如何创建选择查询来选择页面,根据一些条件进行描述。

<booksdetail> <isn_13>700001048</isbn_13> <isn_10>01048B</isbn_10>       
    <Image_URL>http://www.landt.com/Books/large/00/7010000048.jpg</Image_URL>   
    <title>QUICK AND FLUPKE</title> <Description> PRANKS AND JOKES QUICK AND FLUPKE </Description> </booksdetail>
对于您的问题的第2部分,请参阅我对 Stored procedure: pass XML as an argument and INSERT (key/value pairs)的回答,了解如何在存储过程中使用XML的示例。

编辑:下面的示例代码基于注释中给出的具体示例。

declare @MyXML xml

set @MyXML = '<booksdetail> 
                  <isbn_13>700001048</isbn_13> 
                  <isbn_10>01048B</isbn_10> 
                  <Image_URL>http://www.landt.com/Books/large/00/70100048.jpg</Image_URL> 
                  <title>QUICK AND FLUPKE</title> 
                  <Description> PRANKS AND JOKES QUICK AND FLUPKE - CATASTROPHE QUICK AND FLUPKE </Description> 
              </booksdetail>'

select Book.detail.value('(isbn_13/text())[1]','varchar(100)') as isbn_13,Book.detail.value('(isbn_10/text())[1]','varchar(100)') as isbn_10,Book.detail.value('(Image_URL/text())[1]','varchar(100)') as Image_URL,Book.detail.value('(title/text())[1]','varchar(100)') as title,Book.detail.value('(Description/text())[1]','varchar(100)') as Description
    from @MyXML.nodes('/booksdetail') as Book(detail)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读