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();
}