使用 C# 从 SQL Server 数据生成 XML

2024-01-05

我在 SQL Server 中有一个生成 XML 输出的查询。

我想使用 C# 产生相同的结果。是否可以??

查询是

select T1_1.HomeID as [@HomeID],
(
  select T1_2.DayID as [@ID],
  ( select T2.RndString+' '+left(T1_3.TimeValue, 5) as '*'
    from TB1 as T1_3
    inner join TB2 as T2 on T1_3.DayID = T2.DayType 
    and T1_3.TimeCode = T2.StringCode
    where T1_2.HomeID = T1_3.HomeID 
    and T1_2.DayID = T1_3.DayID
    order by T2.StringCode
    for xml path('String'), type)
    from TB1 as T1_2
    where T1_2.HomeID = T1_1.HomeID
    group by T1_2.DayID,T1_2.HomeID
    order by T1_2.DayID
    for xml path('Day'), type )
    from TB1 as T1_1
    group by T1_1.HomeID
    order by T1_1.HomeID
    for xml path('Person'), root('Persons')

有关这方面的更多详细信息,请参阅我之前的帖子。从 SQL Server 中的多个表生成 XML https://stackoverflow.com/questions/16686554/producing-xml-from-multiple-tables-in-sql-server/16689035#16689035.

我的 C# 水平非常差。一个初学者。这里确实需要一些帮助。

我使用的代码是...

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace SQL__
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                // Create a String to hold the database connection string.
                // NOTE: Put in a real database connection string here or runtime won't work
                string sdwConnectionString = @"Data Source=IE1ADTBD5ZL1S\;Initial Catalog=RecommendEngine;Integrated Security=True";

                // Create a connection
                SqlConnection sdwDBConnection = new SqlConnection(sdwConnectionString);

                // Open the connection
                sdwDBConnection.Open();

                // To generate XML File using C# from SQL Server Data

                using (SqlDataAdapter da = new SqlDataAdapter())
                {
                    da.SelectCommand.CommandText = @"select T1_1.HomeID as [@HomeID],
                                                     (
                                                       select T1_2.DayID as [@ID],
                                                              (
                                                               select T2.RndString+' '+left(T1_3.TimeValue, 5) as '*'
                                                               from TB1 as T1_3
                                                                 inner join TB2 as T2
                                                                   on T1_3.DayID = T2.DayType and
                                                                      T1_3.TimeCode = T2.StringCode
                                                               where T1_2.HomeID = T1_3.HomeID and
                                                                     T1_2.DayID = T1_3.DayID
                                                               order by T2.StringCode
                                                               for xml path('String'), type
                                                              )
                                                       from TB1 as T1_2
                                                       where T1_2.HomeID = T1_1.HomeID
                                                       group by T1_2.DayID,
                                                                T1_2.HomeID
                                                       order by T1_2.DayID
                                                       for xml path('Day'), type
                                                      )
                                                     from TB1 as T1_1
                                                     group by T1_1.HomeID
                                                     order by T1_1.HomeID
                                                     for xml path('Person'), root('Persons')";
                    da.SelectCommand.Connection = new SqlConnection("sdwDBConnection");

                    string xml = "";
                    using (DataSet ds = new DataSet())
                    {
                        da.SelectCommand.Connection.Open();
                        da.Fill(ds);
                        da.SelectCommand.Connection.Close();

                        if (ds != null && ds.Tables.Count > 0)
                            xml = ds.GetXml();
                    }
                }

                // Close the connection
                sdwDBConnection.Close();


            }
        }
    }

您可以使用DataTable.WriteXML() and DataTable.WriteXmlSchema()为您的查询生成 XML 的方法。

SqlCommand cmd = new SqlCommand("Your Command", new SqlConnection("Connection String"));
DataTable dt = new DataTable();
new SqlDataAdapter(cmd).Fill(dt);

dt.TableName = "Your Table Name";
dt.WriteXml("File Address");
dt.WriteXmlSchema("Schema File Address");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 从 SQL Server 数据生成 XML 的相关文章

  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何在存储过程中实现 sql 搜索功能 (Sql Server 2008)

    我需要编写一个存储过程 该过程将使用 sql server 2008 根据可选参数搜索表 将会有两种模式 基本搜索模式 我们只传递一些文本 高级搜索模式 使用可选参数而不使用 SearchText 为了进行测试 我使用 AdventureW
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下

随机推荐

  • Microsoft Graph Api OAuth 返回状态代码 200 而不是 302(不重定向到登录页面)

    获取 Microsoft Graph API 的令牌 这是第一个调用 让身份验证用户 microsoft 并获取调用令牌服务的代码 请求已正确发送 但不是获取状态代码 302 以便可以将其重定向到登录页面 我收到状态代码 200 publi
  • SQL Profiler 可以与 LocalDB 一起使用吗?

    是否可以使用 SQL Profiler 来观察 LocalDB 实例请求的查询 只要您知道正确的服务器名称 就可以像使用所有其他 SQL 版本一样使用 SQL Profiler 您可以使用以下命令找到服务器名称本地数据库 http tech
  • 参数中缺少必需的键“Bucket”

    我正在尝试将一个简单的 lambda 函数部署到 aws 但收到错误参数中缺少必需的键 Bucket 我创建的用户拥有完整的 Lambda S3 Cloudformation 和 Cloudwatch 访问权限 JS 使用严格 module
  • ExtJS 别名与 id

    我不明白的用法alias http docs sencha com extjs 4 2 1 api Ext Class cfg aliasExtJS 中的 id 与 itemId 配置属性对比 应用程序 视图 foo js Ext defi
  • 获取隐藏字段值的代码隐藏

    如何获取隐藏字段的值
  • 使用 Swift 创建 Flutter 项目

    Flutter 允许支持Swift编程语言 我怎样才能整合我的SwiftAndroid Studio 中 Flutter 项目的代码文件 没有添加 创建 Swift 文件的选项 在NewAndroid Studio 中的菜单 我认为更好的方
  • 比较 Java 中的 2 个字符串是否有分隔符

    字符串 1 func1 test1 字符串2 func1 test2 我想将这两个字符串与第一个左大括号 进行比较 因此 对于给定的示例 它应该返回 true 因为两个字符串中直到 的字符串都是 func1 有没有什么方法可以在不分裂的情况
  • 如何在asp.net core中处理cookie过期

    我想知道如何正确处理cookie过期的情况 是否可以执行自定义操作 我想要实现的是 当 cookie 过期时 从当前 cookie 中取出一些信息 并通过该信息重定向到操作参数 是否可以 没有一个好的方法可以实现这一点 如果 cookie
  • 在 C++ 中处理 CPU 异常

    是否有跨平台的方法来处理 CPU 异常 例如分段错误或除以零 可以说 我需要调用一些潜在不安全的函数 例如从插件文件 这可能会导致段错误 或在执行之前无法测试的一些其他问题 我知道 C 标准库有信号处理函数 但我不知道如何使用它们来处理问题
  • 为什么我收到“无法解析符号”?

    我以前导入过这个项目 没有任何困难 我不确定发生了什么变化 I click Import Project并选择了getting started with selenium http github com ddavison getting s
  • 使用 thymeleaf 中的搜索功能和请求参数

    我有一个页面 可以在其中获取条目列表 现在 我希望能够从这些列表中进行搜索 我当前用于检索列表的网址是 show products 我想在此页面中添加一个搜索表单 以便我可以使用请求参数进行搜索 是的 我可以使用ajax 但我必须使用请求参
  • 从 pdf 中读取证书

    我正在使用 ITextSharp 来从数字签名的 pdf 文档中读取证书信息 The ITextSharp Text Pdf PdfPKCS7类公开三个属性 Certificates 如清单所示 SignCertificate 作为单个对象
  • 对 pandas 中的布尔值进行重新采样

    我遇到了一个属性 我发现在其中重新采样布尔值很奇怪pandas 这是一些时间序列数据 import pandas as pd import numpy as np dr pd date range 01 01 2020 5 00 perio
  • 递归地包含头文件以进行合成

    我正在处理一个 C 项目并尝试将其配置为使用 syntastic 在我的项目中 我有一个头文件的嵌套目录结构 实际的嵌套结构要糟糕得多 这是一个例子 libs dir1 foo1 h dir2 foo2 h foo3 h dir3 foo4
  • 如何在 Rails 中获取 ruby​​ 对象的大小(以 mb 为单位)?

    我想查询 ActiveRecord 模型 修改它 并计算新对象的大小 以 mb 为单位 我该怎么做呢 不幸的是 数据库中数据行的大小以及内存中 ruby 对象的大小都不容易获得 虽然了解内存中的对象大小要容易一些 但您仍然必须找到属于活动记
  • LocationMatch 和 DAV svn

    我正在尝试使我们的 Subversion 存储库可以通过多个 URL 进行访问 为此 我考虑使用 LocationMatch 指令 我的配置是
  • 获取文本文档中每行的字符数

    我正在尝试获取文本文档中每一行的字符数 我的文本文档的内容是 1 15 69 124 300 我一直在尝试 PS 脚本的变体 get content c serverlist txt foreach object measure objec
  • Java 递归暴力迷宫求解器

    在尝试编写一个强力解决迷宫的 C 程序时 我首先编写了这个 java 程序来测试一个想法 我对 C 很陌生 打算在 Java 中正确使用它后将其转换 因此 我尝试远离数组列表 花哨的库等 以便更容易转换为 C 该程序需要生成最短步骤的单宽度
  • PHP 和 Wordpress 中的调试

    ini set log errors On and define WP DEBUG true 我正在尝试创建一个错误日志文件 但我对这两个文件感到困惑 会出现什么样的错误log errors and WP DEBUG The define
  • 使用 C# 从 SQL Server 数据生成 XML

    我在 SQL Server 中有一个生成 XML 输出的查询 我想使用 C 产生相同的结果 是否可以 查询是 select T1 1 HomeID as HomeID select T1 2 DayID as ID select T2 Rn