读取多个table,存放到dataset,创建关系,导出树形XML格式

方法一:

private void ExitXML()

{

DataSet ds = new DataSet("request");

DataTable stu = new DataTable();

stu =NewsDAL.dbServer.getTableValue("stu").Tables[0];

stu.TableName = "stu";

ds.Tables.Add(stu.Copy());

DataTable Stu_Course = new DataTable();

Stu_Course = NewsDAL.dbServer.getTableValue("Stu_Course").Tables[0];

Stu_Course.TableName = "Stu_Course";

ds.Tables.Add(Stu_Course.Copy());

DataTable Message = new DataTable();

Message = NewsDAL.dbServer.getTableValue("Message").Tables[0];

Message.TableName = "Message";

ds.Tables.Add(Message.Copy());

DataTable Course = new DataTable();

Course = NewsDAL.dbServer.getTableValue("Course").Tables[0];

Course.TableName = "Course";

ds.Tables.Add(Course.Copy());

// 建立父子关系

ds.Relations.Add("stu_Stu_Course", ds.Tables["stu"].Columns["sid"],

ds.Tables["Stu_Course"].Columns["sid"]).Nested = true;

ds.Relations.Add("stu_Message", ds.Tables["stu"].Columns["sid"],

ds.Tables["Message"].Columns["sid"]);

XmlDocument xmldoc = new XmlDocument();

// 创建文档声明和根节点

xmldoc.AppendChild(xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null));

XmlElement xmlelem = xmldoc.CreateElement("", "Request", "");

xmldoc.AppendChild(xmlelem);

XmlElement xmlelem_Stus = xmldoc.CreateElement(ds.Tables[0].TableName+"s");

xmlelem.AppendChild(xmlelem_Stus);

foreach(DataRow dr in ds.Tables[0].Rows ){

XmlElement xmlelem_Stu = xmldoc.CreateElement(ds.Tables[0].TableName);

xmlelem_Stus.AppendChild(xmlelem_Stu);

foreach(DataColumn dc in ds.Tables[0].Columns ){

XmlElement xmlelem_dr = xmldoc.CreateElement(dc.ColumnName);

xmlelem_Stu.AppendChild(xmlelem_dr);

xmlelem_dr.InnerText = dr[dc.ColumnName].ToString();

}

XmlElement xmlelem_Stu_Courses = xmldoc.CreateElement(ds.Tables[1].TableName + "s");

xmlelem_Stu.AppendChild(xmlelem_Stu_Courses);

foreach (DataRow dr2 in dr.GetChildRows("stu_Stu_Course"))

{

XmlElement xmlelem_Stu_Course = xmldoc.CreateElement(ds.Tables[1].TableName);

xmlelem_Stu_Courses.AppendChild(xmlelem_Stu_Course);

foreach (DataColumn dc2 in ds.Tables[1].Columns)

{

XmlElement xmlelem_dr2 = xmldoc.CreateElement(dc2.ColumnName);

xmlelem_Stu_Course.AppendChild(xmlelem_dr2);

xmlelem_dr2.InnerText = dr2[dc2.ColumnName].ToString();

}

}

XmlElement xmlelem_stu_Messages = xmldoc.CreateElement(ds.Tables[2].TableName + "s");

xmlelem_Stu.AppendChild(xmlelem_stu_Messages);

foreach (DataRow dr3 in dr.GetChildRows("stu_Message"))

{

XmlElement xmlelem_stu_Message = xmldoc.CreateElement(ds.Tables[2].TableName);

xmlelem_stu_Messages.AppendChild(xmlelem_stu_Message);

foreach (DataColumn dc3 in ds.Tables[2].Columns)

{

XmlElement xmlelem_dr3 = xmldoc.CreateElement(dc3.ColumnName);

xmlelem_stu_Message.AppendChild(xmlelem_dr3);

xmlelem_dr3.InnerText = dr3[dc3.ColumnName].ToString();

}

}

}

try

{

xmldoc.Save("e:\\c1.xml");

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

Console.Read();

}

方法二:

private static void CreateXmlForDataSetRelation()

{

SqlConnection con = new SqlConnection(@"server=.;user=sa;pwd=alog;database=CestDB");

SqlDataAdapter adpt = new SqlDataAdapter("SELECT * FROM Users", con);

DataSet ds = new DataSet("request");

try

{

con.Open();

adpt.Fill(ds, "Users");

adpt.SelectCommand = new SqlCommand("SELECT * FROM Logs", con);

adpt.Fill(ds, "Logs");

adpt.SelectCommand = new SqlCommand("SELECT * FROM Tanks", con);

adpt.Fill(ds, "Tanks");

}

catch (SqlException e)

{

Console.Write(e.ToString());

}

finally

{

con.Dispose();

}

// 建立父子关系

ds.Relations.Add("User_Log", ds.Tables["Users"].Columns["UserID"],

ds.Tables["Logs"].Columns["UserID"]).Nested = true;

ds.Relations.Add("Log_Tank", ds.Tables["Logs"].Columns["LogID"],

ds.Tables["Tanks"].Columns["LogID"]);

XmlDocument xmldoc = new XmlDocument();

// 创建文档声明和根节点

xmldoc.AppendChild(xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null));

XmlElement xmlelem = xmldoc.CreateElement("", "Request", "");

xmldoc.AppendChild(xmlelem);

// Users

XmlElement xmlelem_Users = xmldoc.CreateElement("Users");

xmlelem.AppendChild(xmlelem_Users);

foreach (DataRow patentrow in ds.Tables["Users"].Rows)

{

// User

XmlElement xmlelem_User = xmldoc.CreateElement("User");

xmlelem_Users.AppendChild(xmlelem_User);

// UserID

XmlElement xmlelem_UserID = xmldoc.CreateElement("UserID");

XmlText xmltxt_UserID = xmldoc.CreateTextNode(patentrow["UserID"].ToString());

xmlelem_UserID.AppendChild(xmltxt_UserID);

xmlelem_User.AppendChild(xmlelem_UserID);

// UserName

XmlElement xmlelem_UserName = xmldoc.CreateElement("UserName");

XmlText xmltxt_UserName = xmldoc.CreateTextNode(patentrow["UserName"].ToString());

xmlelem_UserName.AppendChild(xmltxt_UserName);

xmlelem_User.AppendChild(xmlelem_UserName);

// Logs

XmlElement xmlelem_Logs = xmldoc.CreateElement("Logs");

xmlelem_User.AppendChild(xmlelem_Logs);

foreach (DataRow childrow in patentrow.GetChildRows("User_Log"))

{

// Log

XmlElement xmlelem_Log = xmldoc.CreateElement("Log");

xmlelem_Logs.AppendChild(xmlelem_Log);

// LogID

XmlElement xmlelem_LogID = xmldoc.CreateElement("LogID");

XmlText xmltxt_LogID = xmldoc.CreateTextNode(childrow["LogID"].ToString());

xmlelem_LogID.AppendChild(xmltxt_LogID);

xmlelem_Log.AppendChild(xmlelem_LogID);

// LogDate

XmlElement xmlelem_LogDate = xmldoc.CreateElement("LogDate");

XmlText xmltxt_LogDate = xmldoc.CreateTextNode(childrow["LogDate"].ToString());

xmlelem_LogDate.AppendChild(xmltxt_LogDate);

xmlelem_Log.AppendChild(xmlelem_LogDate);

// Tanks

XmlElement xmlelem_Tanks = xmldoc.CreateElement("Tanks");

xmlelem_Log.AppendChild(xmlelem_Tanks);

foreach (DataRow childrow2 in childrow.GetChildRows("Log_Tank"))

{

// Tank

XmlElement xmlelem_Tank = xmldoc.CreateElement("Tank");

xmlelem_Tanks.AppendChild(xmlelem_Tank);

// TankName

XmlElement xmlelem_TankName = xmldoc.CreateElement("TankName");

XmlText xmltxt_TankName = xmldoc.CreateTextNode(childrow2["TankName"].ToString());

xmlelem_TankName.AppendChild(xmltxt_TankName);

xmlelem_Tank.AppendChild(xmlelem_TankName);

// TankScore

XmlElement xmlelem_TankScore = xmldoc.CreateElement("TankScore");

XmlText xmltxt_TankScore = xmldoc.CreateTextNode(childrow2["TankScore"].ToString());

xmlelem_TankScore.AppendChild(xmltxt_TankScore);

xmlelem_Tank.AppendChild(xmlelem_TankScore);

}

//Console.WriteLine("\t" + childrow["loginID"] + childrow["Title"] + childrow["Reason"]);

}

}

try

{

xmldoc.Save("ccc.xml");

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

Console.Read();

}

时间: 2024-08-08 06:24:30

读取多个table,存放到dataset,创建关系,导出树形XML格式的相关文章

DataSet,DataTable,XML格式互转

//// <summary> /// 将DataTable对象转换成XML字符串 /// </summary> /// <param name="dt">DataTable对象</param> /// <returns>XML字符串</returns> public static string CDataToXml(DataTable dt) { if (dt != null) { MemoryStream ms

详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案

主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxen 官网下载页面: http://sourceforge.net/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/ 也可以在网盘上面下载:http://yunpan.cn/cwaNde7UYN83d  提取码 e247 1 完成多条Emp信息的XML描述 1.1 问

获取项目中文件,存放到Debug中。

说起这个,还真是费了一般功夫. 说个最简单的方法: 第一步:把需要生成到Debug中的文件放到项目中(注意:当前文件夹目录是什么样的,存放到Debug中也是什么样) 第二部:设置文件属性中 复制到输出目录(如果较新则复制:就是在内容更改后就更新,不复制:不会复制,始终复制:如果该文件需要修改,不建议选择此项) 生成操作(无,编译,内容,嵌入的资源) 第三步:已经完成了,是不是很简单. 还有个手动的方法(哈哈,有点麻烦哦!!!): /// <summary> /// 项目中资源文件保存到Debu

把raw目录下的几张照片存放到SD卡里面去

1 try 2 { 3 4 //SD卡路径 5 String filename =android.os.Environment 6 .getExternalStorageDirectory().getAbsolutePath() 7 + "/"+"1.JPG";//图片名称 8 //将文件从资源文件放到合适地方(资源文件也就是放在项目的res下的raw目录中的图片) 9 //将文件复制到SD卡中 10 File dir = new File(filename); 1

从数据库得到的结果集存放到List集合中

一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接,写sql语句,自己封装dao,其余的操作由封转的小框架解决这些重复的工作,用户得到的只是一个集合List. List里面的元素有集合Map其中key是数据库中的字段类型,value是字段类型对应的值这个函数 DBUtil.executeQuery(con, sql) List还提供集合元素存放的是d

读取Excel中的数据到DataSet

读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs()    {        string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\data-for-source-apportionment\\PM-SO2-NOx-CO-O3-201311-20140324.xlsx

server下修改项目发布位置,存放到tomcat\webapps下(项目发布之前)

maven项目发布后默认存放到target目录下(如:E:\MavenWorks\babasport\target):开发web项目时,还需要手动复制到web服务器下(Tomcat) 如果能自动部署到Web服务器,而不用每次手动把target下编译好的war包拷贝到Tomcat下就更好了. 下面是具体的使用方法: 第一步:修改发布路径到webapps下 第二步:修改服务器启动和停止时间为300秒 第三步:1 发布到webapps下的根目录(项目访问URL不需要填写项目名,如直接 http://l

C#将图片存放到SQL SERVER数据库中的方法

本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: //获取当前选择的图片 this.pictureBox1.Image = Image.FromStream(this.openFileDialog1.OpenFile()); //获取当前图片的路径 string path = openFileDialog1.FileName.ToString(); //将制定路径的图片添加到FileStream类中 FileStream fs = ne

12.创建关系时的级联操作

--- 创建关系时的级联操作 alter table student with nocheck --不检查现有数据 add constraint FK_Grade_Student_GradeId foreign key(gradeid) references grade(gradeid) on delete set null --[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] --on--在做何种操作的时候做相应的处理