let it be
行到水穷处 坐看云起时

ADO.NET实现XML数据库应用
包括数据库的创建、删除、数据库表、列的创建、删除修改

1.创建数据库文件
            //将数据库名称保存到另外一个xml数据文件中用来统计有多少个数据库
            DataSet tempds = new DataSet("tempdataset");
            tempds.ReadXml("c:\\databases.xml");
            for (int i = 0; i < tempds.Tables.Count; i++)
            {
                if (tempds.Tables[i].TableName.Trim() == txt_shujkm.Text.Trim())
                {
                    MessageBox.Show("数据库名已经存在,请重新输入!");
                    return;
                }
            }
            tempds.Tables.Add("" + txt_shujkm.Text.Trim() + "");
            tempds.WriteXml("c:\\databases.xml", XmlWriteMode.WriteSchema);
            //创建数据库文件
            DataSet ds = new DataSet("" + txt_shujkm.Text.Trim() + "");
            ds.WriteXml("c:\\" + txt_shujkm.Text.Trim() + ".xml", XmlWriteMode.WriteSchema);
            MessageBox.Show("数据库已经创建成功!");
2.删除数据库
            try
            {
                DataSet tempds = new DataSet();
                tempds.ReadXml("c:\\databases.xml");
                if (treeView1.SelectedNode.Level != 0)
                {
                    MessageBox.Show("请选则数据库名!");
                    return;
                }
                tempds.Tables.Remove("" + treeView1.SelectedNode.Text.Trim() + "");
                tempds.WriteXml("c:\\databases.xml", XmlWriteMode.WriteSchema);
            }
            catch (Exception)
            {
                MessageBox.Show("删除出错!");
                return;
            }
3.添加数据库表
            DataSet ds = new DataSet("" + txt_shujkm.Text.Trim() + "");
            ds.ReadXml("c:\\" + txt_shujkm.Text.Trim() + ".xml");
            try
            {
                ds.Tables.Add("" + txt_biaom.Text.Trim() + "");
            }
            catch (Exception)
            {
                MessageBox.Show("重复表名!");
                return;
            }

            ds.WriteXml("c:\\" + txt_shujkm.Text.Trim() + ".xml", XmlWriteMode.WriteSchema);
            MessageBox.Show("添加成功!");
4.删除数据库表
            string shujkm;
            string biaom;
            if (treeView1.SelectedNode.Level != 2)
            {
                MessageBox.Show("请选则表名!");
                return;
            }
            shujkm = treeView1.SelectedNode.Parent.Text.Trim();
            biaom = treeView1.SelectedNode.Text.Trim();
            DataSet ds = new DataSet("MyDataSet");
            ds.ReadXml("c:\\" + shujkm + ".xml");
            ds.Tables.Remove(biaom);
            ds.WriteXml("c:\\" + shujkm + ".xml", XmlWriteMode.WriteSchema);
5.添加表列名
            DataSet ds = new DataSet("" + txt_shujkm.Text.Trim() + "");
            ds.ReadXml("c:\\" + txt_shujkm.Text.Trim() + ".xml");

            DataColumn myCol = new DataColumn();
            myCol.Caption = "列属性";
            myCol.ColumnName = "" + txt_LieM.Text.Trim() + "";
            myCol.DataType = System.Type.GetType("System." + comb_LieMSX.Text.Trim() + "");
            myCol.MaxLength = Convert.ToInt32(txt_Changd.Text.Trim());

            try
            {
                ds.Tables[txt_biaom.Text.Trim()].Columns.Add(myCol);
            }
            catch (Exception)
            {
                MessageBox.Show("重复列名!");
                return;
            }
            ds.WriteXml("c:\\" + txt_shujkm.Text.Trim() + ".xml", XmlWriteMode.WriteSchema);
            MessageBox.Show("列名创建成功!");
6.删除列名信息
            string shujkm;
            string biaom;
            string liem;
            if (treeView1.SelectedNode.Level != 3)
            {
                MessageBox.Show("请选则列名!");
                return;
            }
            shujkm = treeView1.SelectedNode.Parent.Parent.Text.Trim();
            biaom = treeView1.SelectedNode.Parent.Text.Trim();
            liem = treeView1.SelectedNode.Text.Trim();

            DataSet ds = new DataSet("MyDataSet");
            ds.ReadXml("c:\\" + shujkm + ".xml");
            ds.Tables[biaom].Columns.Remove(liem);

            ds.WriteXml("c:\\" + shujkm + ".xml", XmlWriteMode.WriteSchema);
7.使用dataGridView往数据库中录入数据
                DataSet ds = new DataSet("MyDataSet");
                ds.ReadXml("c:\\" + shujkm.Trim() + ".xml");
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    DataTable dt = ds.Tables[biaom.Trim()];
                    DataRow myrow = ds.Tables[biaom.Trim()].NewRow();
                    for (int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
                        myrow[j] = Convert.ToString(dataGridView1.Rows[i].Cells[j].Value); ;
                    }
                    ds.Tables[biaom.Trim()].Rows.Add(myrow);
                }
                ds.WriteXml("c:\\" + shujkm.Trim() + ".xml", XmlWriteMode.WriteSchema);
                MessageBox.Show("数据传成功!");
8.读取数据显示在dataGridView
            DataSet tempds = new DataSet("tempdataset");
            tempds.ReadXml("c:\\databases.xml");
            for (int i = 0; i < tempds.Tables.Count; i++)
            {
                if (tempds.Tables[i].TableName.Trim() != txt_shujkm.Text.Trim())
                {
                    MessageBox.Show("数据库不存在,请重新输入!");
                    return;
                }
            }

            DataSet ds = new DataSet("" + txt_shujkm.Text.Trim() + "");
            ds.ReadXml("c:\\" + txt_shujkm.Text.Trim() + ".xml");
            this.dataGridView1.DataSource = ds;
            dataGridView1.DataMember = txt_biaom.Text.Trim();
9.创建数据库显示树形结构
        private void CreateTree()
        {
            treeView1.Nodes.Clear();
            TreeNode rootnode = new TreeNode();
            rootnode.Text = "XML数据库";
            treeView1.Nodes.Add(rootnode);
            DataSet tempds = new DataSet("tempdataset");
            tempds.ReadXml("c:\\databases.xml");
            for (int j = 0; j < tempds.Tables.Count; j++)
            {
                DataSet ds = new DataSet("MyDataSet");
                try
                {
                    ds.ReadXml("c:\\" + tempds.Tables[j].TableName.Trim() + ".xml");
                }
                catch
                {
                }
                TreeNode treenode = new TreeNode();
                treenode.Text = tempds.Tables[j].TableName.Trim();
                rootnode.Nodes.Add(treenode);
                if (ds.DataSetName.Trim() == treenode.Text)
                {
                    for (int i = 0; i < ds.Tables.Count; i++)
                    {
                        TreeNode subtreenode = new TreeNode();
                        subtreenode.Text = ds.Tables[i].TableName.Trim();
                        treenode.Nodes.Add(subtreenode);
                        for(int m=0;m<ds.Tables[i].Columns.Count;m++)
                        {
                            TreeNode mintreenode = new TreeNode();
                            mintreenode.Text = ds.Tables[i].Columns[m].ColumnName.Trim();
                            subtreenode.Nodes.Add(mintreenode);
                        }
                       
                    }
                }
            }
            treeView1.ExpandAll();
        }

posted on 2007-06-08 11:06  流浪浪  阅读(1169)  评论(1编辑  收藏  举报