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

时间:2022-07-24 13:56:18 

在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会报编码错误异常。

标签:C#,SqlDbType.Xml,类型参数
0
投稿

猜你喜欢

  • C# 根据字符串生成二维码的实例代码

    2023-09-16 09:06:50
  • Android Textview实现颜色渐变滚动效果

    2023-08-28 05:30:08
  • Springboot整合微信支付(订单过期取消及商户主动查单)

    2023-05-15 23:40:50
  • Java通过卖票理解多线程

    2023-01-05 02:31:44
  • Android开发之拖动条和评分组件用法分析

    2022-01-15 02:55:18
  • 使用C++ Matlab中的lp2lp函数教程详解

    2023-07-13 17:13:12
  • spring boot 实现配置多个DispatcherServlet最简单方式

    2023-12-18 03:24:46
  • java实现MD5加密算法的实例代码

    2021-10-01 16:49:14
  • Activity取消界面切换的默认动画方法(推荐)

    2021-05-23 12:12:52
  • Android性能优化及性能优化工具

    2023-11-12 09:24:00
  • Java设计模式之监听器模式实例详解

    2022-10-04 02:51:44
  • Android本地实现搜索历史记录

    2023-08-15 22:25:17
  • Android 下载文件通知栏显示进度条功能的实例代码

    2023-09-01 19:42:50
  • IDEA启动tomcat控制台中文乱码问题的解决方法(100%有效)

    2021-06-25 10:45:23
  • Android如何使用GestureDetector进行手势检测详解

    2022-03-21 22:08:46
  • 使用JVM常用GC日志打印参数

    2021-09-06 17:36:41
  • 使用C语言的fork()函数在Linux中创建进程的实例讲解

    2023-07-07 04:40:24
  • 详解用RxJava实现事件总线(Event Bus)

    2022-02-13 16:43:18
  • Android自定义View实现验证码

    2021-11-08 01:13:31
  • C#使用GUID(全局统一标识符)

    2022-08-23 10:25:25
  • asp之家 软件编程 m.aspxhome.com