yss729 2013-11-06 08:11 采纳率: 0%
浏览 836

SQL 中for xml auto 与ADO.Net的疑问

我先说下第一种情况,
string sql ="select * from users for xml auto "
SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
conn.Open();
sda.SelectCommand.CommandType = CommandType.Text;
sda.SelectCommand.Parameters.AddWithValue("@maxdtm", maxdtm);
DataSet ds = new DataSet();
sda.Fill(ds);

填充后可以得到一张 xml的数据
现在有个需求是想从 存储过程中得到这张结果,因为这个结果本身只是一个xml链接,存在内存中,想问下这种情况下通过ado.net 怎么取得!

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-19 18:29
    关注

    该回答引用ChatGPT

    如果你想从存储过程中获取XML链接并将其加载到内存中,可以使用ADO.NET中的XmlReader类。XmlReader类提供了一种读取XML数据的方式,可以从XML数据源读取数据并将其解析为.NET对象。


    你可以在存储过程中使用SELECT语句返回XML数据,并将其作为结果集返回。然后在C#代码中,你可以使用SqlCommand和XmlReader来执行存储过程并读取XML数据。


    下面是一些示例代码:

    • 存储过程中的SELECT语句

      CREATE PROCEDURE GetXmlData
      AS
      BEGIN
        SELECT * FROM users FOR XML AUTO
      END
      
    • C#代码中的SqlCommand和XmlReader

      using (SqlConnection conn = new SqlConnection(connectionString))
      {
        SqlCommand cmd = new SqlCommand("GetXmlData", conn);
        cmd.CommandType = CommandType.StoredProcedure;
      
        conn.Open();
        XmlReader reader = cmd.ExecuteXmlReader();
        while (reader.Read())
        {
            //处理XML数据
        }
      }
      

    在上面的代码中,我们首先创建一个SqlCommand对象,指定要执行的存储过程名称和连接对象。然后设置SqlCommand的CommandType属性为StoredProcedure,这表明我们要执行的是一个存储过程而不是一个SQL语句。


    接下来,我们打开连接并执行SqlCommand对象,使用ExecuteXmlReader方法来获取XmlReader对象。然后我们可以使用XmlReader对象来遍历XML数据,并执行必要的处理。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?