是否可以使用C#獲取以下XML文件。數據在SQL Server中。使用C#生成以下XML文件
<Person HomeID="1">
<Day ID="1">
<String>I get up at 07:00</String>
<String>I have breakfast at 07:30</String>
<String>I go to office at 08:00</String>
<String>I have lunch at 13:00</String>
<String>I come back from office at 17:00</String>
<String>I have dinner at 19:00</String>
<String>I sleep at 21:30</String>
</Day>
<Day ID="2">
<String>I get up at 08:00</String>
<String>I have breakfast at 08:30</String>
<String>I have lunch at 13:00</String>
<String>I have dinner at 20:00</String>
<String>I sleep at 23:00</String>
</Day>
</Person>
<Person HomeID="2">
<Day ID="1">
<String>I get up at 08:00</String>
<String>I have breakfast at 08:30</String>
<String>I go to office at 09:00</String>
<String>I have lunch at 13:00</String>
<String>I come back from office at 18:00</String>
<String>I have dinner at 20:00</String>
<String>I sleep at 22:00</String>
</Day>
<Day ID="2">
<String>I get up at 09:00</String>
<String>I have breakfast at 10:00</String>
<String>I have lunch at 13:00</String>
<String>I have dinner at 19:00</String>
<String>I sleep at 22:30</String>
</Day>
</Person>
我有兩個表,TB1和TB2。
TB1中的字段是HomeID,DayID,TimeCode,timevalue。
HomeID DayID TimeCode timevalue
1 1 1 07:00:00
1 1 2 07:30:00
1 1 3 08:00:00
1 1 4 13:00:00
1 1 5 17:00:00
1 1 6 19:00:00
1 1 7 21:30:00
1 2 1 08:00:00
1 2 2 08:30:00
1 2 3 13:00:00
1 2 4 20:00:00
1 2 5 23:00:00
2 1 1 08:00:00
2 1 2 08:30:00
2 1 3 09:00:00
2 1 4 13:00:00
2 1 5 18:00:00
2 1 6 20:00:00
2 1 7 22:00:00
2 2 1 09:00:00
2 2 2 10:00:00
2 2 3 13:00:00
2 2 4 19:00:00
2 2 5 22:30:00
TB2中的字段是DayType,StringCode,RndString。
DayType StringCode RndString
1 1 I get up at
1 2 I have breakfast at
1 3 I go to office at
1 4 I have lunch at
1 5 I come back from office at
1 6 I have dinner at
1 7 I sleep at
2 1 I get up at
2 2 I have breakfast at
2 3 I have lunch at
2 4 I have dinner at
2 5 I sleep at
注: TB1.DayID = TB2.DayType和TB1.TimeCode = TB2.StringCode
等效SQL查詢來產生期望的XML輸出是
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')
我試用解決方案。
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
{
// To generate XML File using C# from SQL Server Data
// The main entry point for the application.
[STAThread]
static void Main()
{
// Create a String to hold the database connection string.
string sdwConnectionString = @"Data Source=IE1ADTBD5ZL1S\;Initial Catalog=RecommendEngine;Integrated Security=True";
// Create a connection
SqlConnection sdwDBConnection = new SqlConnection(sdwConnectionString);
// Open the connection
sdwDBConnection.Open();
//Create a String to hold the query.
string query = @"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')";
//Create a SqlCommand object and pass the constructor the connection string and the query string.
SqlCommand queryCommand = new SqlCommand(query, sdwDBConnection);
DataTable dt = new DataTable();
new SqlDataAdapter(queryCommand).Fill(dt);
dt.TableName = "TableName";
dt.WriteXml(@"C:/SampleFile.xml");
// Close the connection
sdwDBConnection.Close();
}
}
}
-1,不顯示任何努力,自己嘗試一下。 –
嘿,我確實試圖解決這個問題。但它沒有得到有效發揮。 – SarangArd