提取数据表保存为XML文件
1 //连接数据库 2 SqlConnection con = new SqlConnection("server=****;database=****;uid=sa;pwd=********"); 3 4 /// <summary> 5 /// 提取数据表保存为XML文件 6 /// </summary> 7 /// <param name="sender"></param> 8 /// <param name="e"></param> 9 private void button3_Click(object sender, EventArgs e) 10 { 11 try 12 { 13 //打开数据库 14 con.Open(); 15 16 //当数据库为打开时 17 if (con.State == ConnectionState.Open) 18 { 19 20 //声明一个DataTable 存储数据 21 DataTable dt = new DataTable(); 22 //SQL语句 23 string str = "select * from CurrentStock"; 24 25 //声明一个sql数据适配器执行sql语句 26 SqlDataAdapter sad = new SqlDataAdapter(str, con); 27 28 //将SQLql数据适配器的内容填充到DATATABEL 29 sad.Fill(dt); 30 31 //当DataTable的内容大于0 时,向下执行 32 if (dt.Rows.Count > 0) 33 { 34 35 //创建一个DOM对象 36 XDocument xDoc = new XDocument(); 37 //创建XML文档的声明语句 38 XDeclaration xDec = new XDeclaration("1.0", "UTF-8", "no"); 39 //将声明语句给XML文档xDoc 40 xDoc.Declaration=xDec; 41 42 //创建一个根节点 43 XElement xrootElement = new XElement("CurrentStock"); 44 //将根节点添加到XML文档xDoc中 45 xDoc.Add(xrootElement); 46 47 //遍历DataTable的每一行 48 for (int i = 0; i < dt.Rows.Count; i++) 49 { 50 //创建一个子节点,区分每一行的数据 51 XElement xElementRow = new XElement("Row"); 52 //给子节点Row添加一属性,这里是行号,识别一共有多少行 53 xElementRow.SetAttributeValue("Autoid", (i + 1).ToString()); 54 55 //遍历每一列,主要获取列名 56 for (int j = 0; j <dt.Columns.Count; j++) 57 { 58 //向子节点Row中添加子元素, 元素的名称是dt中的列表 ,值是dt中每一行每一列的值 59 xElementRow.SetElementValue(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString().Trim()); 60 61 } 62 63 //将子点节Row添加到根节点下 64 xrootElement.Add(xElementRow); 65 66 67 68 } 69 70 //保存XML文件 71 xDoc.Save("TableNameA"); 72 73 //提示成功 74 MessageBox.Show("OK"); 75 76 } 77 78 else 79 { 80 81 MessageBox.Show("表中没有数据!"); 82 83 } 84 85 86 } 87 else 88 { 89 MessageBox.Show("数据库连接出错,请检查!"); 90 91 } 92 93 94 } 95 catch 96 { 97 98 99 throw; 100 101 } 102 103 104 con.Close(); 105 }