【发布时间】:2012-08-09 15:06:10
【问题描述】:
我正在使用 sql 数据库来保存一个简单的笔记应用程序的数据,使用数据集和 gui 与数据库绑定。简单的工作。 在这里使用 SQL 是没用的,我想将数据保存到一个简单的 XML 文件,而不是使用相同数据集的 SQL。
我正在使用 Visual Studio 2010 并使用 C# .Net 4.0 进行编程
【问题讨论】:
我正在使用 sql 数据库来保存一个简单的笔记应用程序的数据,使用数据集和 gui 与数据库绑定。简单的工作。 在这里使用 SQL 是没用的,我想将数据保存到一个简单的 XML 文件,而不是使用相同数据集的 SQL。
我正在使用 Visual Studio 2010 并使用 C# .Net 4.0 进行编程
【问题讨论】:
单个表到 XML 的数据集
private void SingleTableToXml()
{
DataSet myDS = getDataSet();
// To write out the contents of the DataSet as XML,
// use a file name to call the WriteXml method of the DataSet class
myDS.WriteXml(Server.MapPath("filename.xml"), XmlWriteMode.IgnoreSchema);
}
如果你在数据集中有多个表,说它是主从关系,那么方法是完全一样的。只需确保在表之间创建 DataRelation 并将关系 Nested 属性设置为 true,如下面的代码所示
//Get the primary key column from the master table
DataColumn primarykey = myDS.Tables["Categories"].Columns["CategoryID"];
//Get the foreign key column from the detail table
DataColumn foreignkey = myDS.Tables["Products"].Columns["CategoryID"];
//Assign a relation
DataRelation relation = myDS.Relations.Add(primarykey, foreignkey);
//Ask ADO.NET to generate nested XML nodes
relation.Nested = true;
希望对你有帮助
【讨论】:
我用的是:
private void buttonSaveXML_Click(object sender, EventArgs e)
{
SaveFileDialog saveFile = new SaveFileDialog();
saveFile.Filter = "XML Files|*.xml";
saveFile.Title = "Save a Xml File";
saveFile.ShowDialog();
if (saveFile.FileName != "")
{
FileStream fs =
(FileStream)saveFile.OpenFile();
DataSet.WriteXml(fs);
}
{
DataSet 是我使用的Dataset,制作一个单独的按钮以方便使用是个好主意。
【讨论】:
您没有指定您的编程环境。假设您使用的是 .NET....
使用数据集的WriteXml 方法。
这里有一篇文章:http://msdn.microsoft.com/en-us/library/ms233698%28VS.80%29.aspx
【讨论】:
这里是从数据集生成 XML 的好例子
DataSet ds = new DataSet();
DataTable dt = new DataTable();
DataColumn dc;
DataRow dr;
ds.DataSetName = "products";
dt.TableName = "product";
dc = new DataColumn("product_id");
dt.Columns.Add(dc);
dc = new DataColumn("product_name");
dt.Columns.Add(dc);
dr = dt.NewRow();
dr["product_id"] = 1;
dr["product_name"] = "Monitor";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["product_id"] = 2;
dr["product_name"] = "Mouse";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["product_id"] = 3;
dr["product_name"] = "KeyBoard";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
string strXML= ds.GetXml();
System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath("datasetxml.xml"));
sw.WriteLine(strXML);
sw.Close();
【讨论】: