//连接数据库
SqlConnection con = new SqlConnection("server=****;database=****;uid=sa;pwd=********");
/// <summary>
/// 提取数据表保存为XML文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
try
{
//打开数据库
con.Open();
//当数据库为打开时
if (con.State == ConnectionState.Open)
{
//声明一个DataTable 存储数据
DataTable dt = new DataTable();
//SQL语句
string str = "select * from CurrentStock";
//声明一个sql数据适配器执行sql语句
SqlDataAdapter sad = new SqlDataAdapter(str, con);
//将SQLql数据适配器的内容填充到DATATABEL
sad.Fill(dt);
//当DataTable的内容大于0 时,向下执行
if (dt.Rows.Count > )
{
//创建一个DOM对象
XDocument xDoc = new XDocument();
//创建XML文档的声明语句
XDeclaration xDec = new XDeclaration("1.0", "UTF-8", "no");
//将声明语句给XML文档xDoc
xDoc.Declaration=xDec;
//创建一个根节点
XElement xrootElement = new XElement("CurrentStock");
//将根节点添加到XML文档xDoc中
xDoc.Add(xrootElement);
//遍历DataTable的每一行
for (int i = ; i < dt.Rows.Count; i++)
{
//创建一个子节点,区分每一行的数据
XElement xElementRow = new XElement("Row");
//给子节点Row添加一属性,这里是行号,识别一共有多少行
xElementRow.SetAttributeValue("Autoid", (i + ).ToString());
//遍历每一列,主要获取列名
for (int j = ; j <dt.Columns.Count; j++)
{
//向子节点Row中添加子元素, 元素的名称是dt中的列表 ,值是dt中每一行每一列的值
xElementRow.SetElementValue(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString().Trim());
}
//将子点节Row添加到根节点下
xrootElement.Add(xElementRow);
}
//保存XML文件
xDoc.Save("TableNameA");
//提示成功
MessageBox.Show("OK");
}
else
{
MessageBox.Show("表中没有数据!");
}
}
else
{
MessageBox.Show("数据库连接出错,请检查!");
}
}
catch
{
throw;
}
con.Close();
}