深入C#中使用SqlDbType.Xml类型参数的使用详解

在sql server2005以及之后的sql server中引入了Xml数据类型,在C#中使用Xml数据类型需要指定参数类型为SqlDbType,参数值类型需要用SqlXml,如下示例:
假定有一种表A,A表有两个字段:ID 类型 int,Data 类型 Xml,我要用C#往表中插入一行记录:


代码如下:

static void InsertA(int aid, string contentXml)
{
//ConnString是连接字符串,需要额外定义
    using (SqlConnection conn = new SqlConnection(ConnString))
    {
        conn.Open();
        string sql = "INSERT INTO [A] ([ID],[Content])VALUES(@id,@content)";
        using (SqlCommand comm = new SqlCommand(sql, conn))
        {
            using (XmlTextReader rdr = new XmlTextReader(contentXml, XmlNodeType.Document, null))
            {
                SqlXml sqlXml = new SqlXml(rdr);

SqlParameter parmID = new SqlParameter("@id", aid);
                SqlParameter parmContent = new SqlParameter("@content", SqlDbType.Xml, sqlXml.Value.Length);
                parmContent.Value = sqlXml;

comm.Parameters.Add(parmID);
                comm.Parameters.Add(parmContent);
                comm.ExecuteNonQuery();
            }
        }
        conn.Close();
    }
}

插入数据时需要用SqlXml数据类型作为参数值,但读出Xml类型数据时的C#数据类型是string。如下示例:


代码如下:

string GetContent(int id)
{
    string sql = "SELECT [Content] FROM [A] WHERE [ID] = " + id;

using (SqlConnection conn = new SqlConnection(ConnString))
    {
        conn.Open();
        using (SqlCommand comm = new SqlCommand(sql,conn))
        {
            string xml = (string)comm.ExecuteScalar();
            return xml;
        }
    }
}

需要注意的是,在插入数据时Xml字段的参数值类型不可以为string,直接用string会报编码错误异常。

(0)

相关推荐

  • 详解C#借助.NET框架中的XmlTextReader类读取XML的方法

    XmlTextReader 提供对 XML 数据流的只进只读访问.当前节点指读取器定位到的节点.使用任何读方法推进读取器并且属性反映当前节点的值. 此类实现 XmlReader 并符合 W3C 可扩展标记语言 (XML) 1.0 和"XML 中的命名空间"建议.XmlTextReader 提供以下功能: 执行格式良好的 XML 的规则. XmlTextReader 不提供数据验证. 检查 DocumentType 节点是否是格式良好的.XmlTextReader 检查 DTD 的格式是

  • C#自定义处理xml数据类实例

    本文实例讲述了C#自定义处理xml数据类.分享给大家供大家参考.具体分析如下: 这个C#类专门用户处理xml数据,可以大大简化xml的操作,类中封装了常用的xml操作,包括打开.读取xml数据,读取.写入节点数据,通过xpath读取节点数据,导出节点数据等等,还可以根据需要自己扩充类的功能. using System; using System.Data; using System.IO; using System.Xml; namespace DotNet.Utilities { public

  • C#中使用XmlDocument类来创建和修改XML格式的数据文件

    通过XmlDocument类修改XML文档数据,通常需要以下几个主要步骤或其中几个步骤. (1)获取一个包含XML文档数据的XmlDocument类对象,通常有两种方法来实现这个功能: 通过XmlDocument类的构造函数创建不包含任何结点的空对象,常用默认构造函数. (2)通过XmlDocument类的ChildNodes和Item属性获取某个结点(XmlNode类型),通过XmlNode的Name.Value.InnerText等属性修改选中结点的数据. (3)通过XmlDocument类

  • C#写入对象或集合类型数据到xml文件的方法

    本文实例讲述了C#写入对象或集合类型数据到xml文件的方法.分享给大家供大家参考.具体实现方法如下: public static string SerializeToXmlString(object objectToSerialize) { MemoryStream memoryStream = new MemoryStream(); System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serializati

  • C#实现的XML操作类实例

    本文实例讲述了C#实现的XML操作类.分享给大家供大家参考.具体如下: 这里讲述了C#写的一个XML操作类,包括读取/插入/修改/删除. 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.W

  • C# 操作XML文档 使用XmlDocument类方法

    W3C制定了XML DOM标准.很多编程语言中多提供了支持W3C XML DOM标准的API.我在之前的文章中介绍过如何使用Javascript对XML文档进行加载与查询.在本文中,我来介绍一下.Net中的XmlDocument类.它支持并扩展了W3C XML DOM标准.它将整个XML文档都先装载进内存中,然后再对XML文档进行操作,所以如果XML文档内容过大,不建议使用XmlDocument类,因为会消耗过多内存.对于很大的XML文档,可以使用XmlReader类来读取.因为XmlReade

  • c#操作xml帮助类分享(xml增删改查)

    复制代码 代码如下: using System;using System.Collections;using System.Xml; namespace Jb51.Com.XmlDAL{public class XmlHelper{#region 公共变量XmlDocument xmldoc;XmlNode xmlnode;XmlElement xmlelem;#endregion #region 创建Xml文档/// <summary>/// 创建一个带有根节点的Xml文件/// </

  • C#实现的xml操作类完整实例

    本文实例讲述了C#实现的xml操作类,分享给大家供大家参考,具体如下: 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

  • 基于C#实现XML文件读取工具类

    本文实例讲述了基于C#实现XML文件读取工具类.分享给大家供大家参考.具体如下: 这是我去年写的一个XML文件读取工具类,现在做了一些调整 基本能满足一般的XML文件读取需求. 更新: 2013年6月26日19:37 Fix了几个Bug,为所有方法添加单元测试,并运行通过:同时调整了几个方法的位置. /// <summary> /// Author: jiangxiaoqiang /// </summary> public class XmlReader { //=========

  • C#实现XML与实体类之间相互转换的方法(序列化与反序列化)

    本文实例讲述了C#实现XML与实体类之间相互转换的方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Data; using System.Xml; using System.Xml.Serialization; /// <summary> /// Xml序列化与反序列化 //

随机推荐