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数据,并执行必要的处理。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!