zoukankan      html  css  js  c++  java
  • Sqlserver in 实现 参数化查询 XML类型

    原文: http://www.cnblogs.com/tangruixin/archive/2012/04/23/2465917.html

    1:如果参数是int类型:

    declare @a xml
    set @a='
    <row><id>1</id></row>
    <row><id>5</id></row>
    <row><id>4</id></row>
    <row><id>3</id></row>
    <row><id>2</id></row>'
    select * from product where id in (
    select d.x.value('./id[1]','int') from @a.nodes('/*') as d(x))

    2:如果参数是varchar类型:

    declare @a xml
    set @a='
    <row><name>a</name></row>
    <row><name>b5</name></row>
    <row><name>c4</name></row>
    <row><name>d3</name></row>
    <row><name>e2</name></row>'
    select * from product where pname in (
    select d.x.value('./name[1]','varchar(100)') from @a.nodes('/*') as d(x))

    以第一个为例写的C#简单方法

    复制代码
        public DataSet GetData(List<int> idList) {
            System.Text.StringBuilder idXML = new System.Text.StringBuilder();
            // 把IdList转换成idxml(后面要用到的xml参数的值)
            foreach (var item in idList)
            {
                idXML.AppendFormat("<row><id>{0}</id></row>",item);
            }
    
            System.Text.StringBuilder strSql = new System.Text.StringBuilder();
            strSql.Append("select * from product where id in (");
            // 解析xml参数@a 取出ID 这里可以认为@a是一个特殊的表
            strSql.Append("select d.x.value('./id[1]','int') from @a.nodes('/*') as d(x)");
    
            strSql.Append(")");
            SqlConnection con = new SqlConnection("数据库连接字符串");
            SqlCommand cmd = new SqlCommand(strSql.ToString(), con);
            // 参数赋值
            SqlParameter[] para = new SqlParameter[]{
                new SqlParameter("@a",SqlDbType.Xml){Value= idXML.ToString()}
            };
            cmd.Parameters = para;
    
            // 查询
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            return ds;
        }
    复制代码
  • 相关阅读:
    数值分析实验之数值积分法(java 代码)
    Python 数据处理
    Python 网络爬虫
    数据库系统开发——旅游公司机票查询及预订系统
    Python词云生成
    Python库的安装与查看
    Python词频统计
    Python程序设计训练
    Python编程基础训练
    如何在同一Linux服务器上创建多站点
  • 原文地址:https://www.cnblogs.com/zhuangke668/p/5029106.html
Copyright © 2011-2022 走看看