按鍵觸發生成XML文件的事件
各位高手请帮帮忙……string sql = "SELECT BedNo,BarCode FROM dbo.tbl_bed FOR XML AUTO,XMLDATA";
SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=db_Wellmeadowshospital;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();
DataSet ds = new DataSet();
ds.DataSetName = "XML";
ds.ReadXml(objXmlReader, XmlReadMode.Fragment);
ds.WriteXml(Server.MapPath("albert.xml"));
conn.Close();
我利用以上代码想实现从数据库提取所需数据生成所要的XML文件,但当我运行时,
XmlTextReader objXmlReader = (XmlTextReader)cmd.ExecuteXmlReader();
这句利用TextReader的语句总是出错……(用的是VS2008).
Error: InvalidCastException was unhandled by user code:
XmlTextReader objXmlReader
補充,XmlTextReader 是不能直接強制轉換成 XmlReader。但問題是即使我都改成XmlReader來讀取DataSet的數據時,還是生成不了制定的XML文檔。
感覺好像DataSet就沒裝入數據。 --------------------编程问答-------------------- 给你个我以前写的例子参考下
--------------------编程问答-------------------- better than others' anyway!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace XMLReadAndStore
{
public partial class Form1 : Form
{
private static readonly string FileName = "DomainSystem.xml";
DataSet set = new DataSet();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataGridViewBind();
}
private void DataGridViewBind()
{
try
{
DataTable table = new DataTable("item");
table.Columns.AddRange(new DataColumn[]
{
new DataColumn("id"),
new DataColumn("DomainName"),
new DataColumn("DomainDescribe"),
new DataColumn("DomainRegDate"),
new DataColumn("DomainDeadDate")
});
table.Columns["id"].DataType = typeof(Int32);
table.ReadXml(FileName); //读取xml文件
set.Tables.Add(table);
dataGridView1.DataSource = set.Tables[0];//设置dataGridView的数据源
}
catch (IndexOutOfRangeException)
{
MessageBox.Show("Cannot find table 0 .");
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
DataTable table = set.Tables[0];
DataRow[] rows = table.Select(@"DomainName = '" + this.txtName.Text.Replace("'", "''") + "'");
rows = table.Select(@"id = max(id)");
int x = Convert.ToInt32(rows[0]["id"].ToString());
DataRow row = table.NewRow();
row["id"] = x + 1;
row["DomainName"] = txtName.Text;
row["DomainDescribe"] = txtDescribe.Text;
row["DomainRegDate"] = dateTimePicker1.Value;
row["DomainDeadDate"] = dateTimePicker2.Value;
table.Rows.Add(row);
set.WriteXml(FileName);
}
private void button1_Click(object sender, EventArgs e)
{
}
private void btnDel_Click(object sender, EventArgs e)
{
//foreach (DataGridViewRow row in dataGridView1.SelectedRows) // 与下面的功能相同
//{
// dataGridView1.Rows.Remove(row);
// set.WriteXml(FileName);
//}
for (int i = 0; i < this.dataGridView1.SelectedRows.Count; i++)
{
this.dataGridView1.Rows.RemoveAt(this.dataGridView1.CurrentRow.Index);
set.WriteXml(FileName);
}
}
}
}
补充:.NET技术 , C#