给一个把xml作为数据库读写的例子。谢谢。 你可以参考下面的贴子,很详细。http://expert.csdn.net/Expert/topic/1357/1357382.xml?temp=.8136865 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是作为xml操作。好象原来看到过可一把一个xml文件当作一个数据库文件。用普通的数据库语句通过oledb来操作xml数据库? 有这样的方法吗?能通过oledb来操作XML的话太好了!学习! 应该是用dataset、dataview结合读写xml文件的方法操作的吧?下面是我的一段对以xml作为数据库的添加、编辑、删除的操作:<Script Language="C#" Runat="Server">DataSet ds;DataView dv;FileStream fout ;FileStream fin ;string SortField;string sPath;string datafile;ICollection CreateDataSource() { sPath = Server.MapPath("../qualification/qualification.xml") ; try { ds = new DataSet(); fout = new FileStream(sPath,FileMode.Open, FileAccess.Read,FileShare.ReadWrite) ; ds.ReadXml(fout, XmlReadMode.InferSchema); fout.Close(); dv = ds.Tables[0].DefaultView; dv.Sort = "id ASC"; } catch (Exception edd) { Label1.Text="不能读出XML文件,因为 "+edd.ToString() ; } return dv; }public void Page_Load(Object src,EventArgs e){ ds = new DataSet(); fout = new FileStream(Server.MapPath("key.xml"),FileMode.Open, FileAccess.Read,FileShare.ReadWrite) ; ds.ReadXml(fout); fout.Close(); DataTable customerTable = ds.Tables[0]; dv=new DataView(customerTable,"","redirect",DataViewRowState.CurrentRows); int rowIndex = dv.Find("managequalifi.aspx"); DataRowView dr=dv[rowIndex]; if (User.Identity.Name.ToString()!=dr["user"].ToString()){ Response.Redirect("login.aspx"); } if (!IsPostBack){ BindGrid(); } CreateDataSource(); AddItem.Visible=false; }public void BindGrid() { MyDataGrid.DataSource = CreateDataSource(); MyDataGrid.DataBind(); }public void PanelShow(Object sender,EventArgs e){ vi.Visible = false; AddItem.Visible = true; Label1.Text= "";} 接上篇:public void AddItem_Click(Object sender,EventArgs e) { datafile="../qualification/qualification.xml"; if (serial.Text=="") { Label1.Text="编号不能为空!"; AddItem.Visible = true; } else { try{ Label1.Text="" ; fout= new FileStream(Server.MapPath(datafile),FileMode.Open,FileAccess.Read,FileShare.ReadWrite); DataSet ds = new DataSet(); ds.ReadXml(fout,XmlReadMode.InferSchema); fout.Close(); DataRow newRow = ds.Tables[0].NewRow(); newRow["id"]=serial.Text; newRow["otime"]=DateTime.Now.ToString("yyyy-M-d"); newRow["intro"]=intro.Text; ds.Tables[0].Rows.Add(newRow); fin = new FileStream(Server.MapPath(datafile),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); ds.WriteXml(fin, XmlWriteMode.WriteSchema); fin.Close(); Label1.Text=""; serial.Text=""; intro.Text=""; } catch (Exception edd) { Label1.Text="不能写入XML文件,因为 "+edd.ToString() ; } vi.Visible = true; AddItem.Visible = false; BindGrid(); } }void reset_Click(Object sender,EventArgs e) { serial.Text=""; intro.Text=""; vi.Visible = true; AddItem.Visible = false; }public void MyDataGrid_Delete(Object sender,DataGridCommandEventArgs e) { if(((LinkButton)e.CommandSource).CommandName == "del") { int row = (int)e.Item.ItemIndex; dv.Delete(row); fin = new FileStream(Server.MapPath("../qualification/qualification.xml"),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); ds.WriteXml(fin, XmlWriteMode.WriteSchema); fin.Close(); BindGrid(); } }public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) { MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex; BindGrid(); }public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) { MyDataGrid.EditItemIndex = -1; BindGrid(); }public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) { string id = e.Item.Cells[2].Text; string intro = ((TextBox)e.Item.Cells[4].Controls[0]).Text; dv.RowFilter = "id='"+id+"'"; if (dv.Count > 0) { dv.Delete(0); } dv.RowFilter = ""; DataRow newRow = ds.Tables[0].NewRow(); newRow["id"]=id; newRow["otime"]=DateTime.Now.ToString("yyyy-M-d"); newRow["intro"]=intro; ds.Tables[0].Rows.Add(newRow); fin = new FileStream(Server.MapPath("../qualification/qualification.xml"),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); ds.WriteXml(fin, XmlWriteMode.WriteSchema); fin.Close(); MyDataGrid.EditItemIndex = -1; BindGrid(); }</script> xml文件如下:<NewDataSet> <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element name="qualification"> <xs:complexType> <xs:sequence> <xs:element name="id" type="xs:string" minOccurs="0" /> <xs:element name="intro" type="xs:string" minOccurs="0" /> <xs:element name="otime" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <qualification> <id>02</id> <intro>22</intro> <otime>2003-2-18</otime> </qualification> <qualification> <id>03</id> <intro>3333</intro> <otime>2003-2-18</otime> </qualification></NewDataSet> 有一个叫EditXmlWithDataGrid的例子,很不错。你从网上找找看,如果找不到,告诉我,发给你 asp.net程序提示出错,大家帮忙看看 小弟不才 问关于ccflow工作流引擎的问题 新手 绑定怎么嵌套 如何快速及准确的检测数据库连接状态! 急!PageMethods问题,100分相赠! http://news.csdn.net/n/20080123/113003.html是怎么实现的 RadioButtonList在DataList或者GridView里什么取值 用SqlBulkCopy向数据库插入数据 当有重复主键时 如何快速跳过 关于ASP.NET字符的问题 運行空白asp.net應用程序出錯。。。請大家看看。。。我重裝了幾次了。。。 怎样在服务器端调用javascript?
用普通的数据库语句通过oledb来操作xml数据库?
学习!
<Script Language="C#" Runat="Server">
DataSet ds;
DataView dv;
FileStream fout ;
FileStream fin ;
string SortField;
string sPath;
string datafile;
ICollection CreateDataSource() {
sPath = Server.MapPath("../qualification/qualification.xml") ;
try
{
ds = new DataSet();
fout = new FileStream(sPath,FileMode.Open, FileAccess.Read,FileShare.ReadWrite) ;
ds.ReadXml(fout, XmlReadMode.InferSchema);
fout.Close();
dv = ds.Tables[0].DefaultView;
dv.Sort = "id ASC";
}
catch (Exception edd)
{
Label1.Text="不能读出XML文件,因为 "+edd.ToString() ;
}
return dv;
}
public void Page_Load(Object src,EventArgs e){
ds = new DataSet();
fout = new FileStream(Server.MapPath("key.xml"),FileMode.Open, FileAccess.Read,FileShare.ReadWrite) ;
ds.ReadXml(fout);
fout.Close();
DataTable customerTable = ds.Tables[0];
dv=new DataView(customerTable,"","redirect",DataViewRowState.CurrentRows);
int rowIndex = dv.Find("managequalifi.aspx");
DataRowView dr=dv[rowIndex];
if (User.Identity.Name.ToString()!=dr["user"].ToString()){
Response.Redirect("login.aspx");
}
if (!IsPostBack){
BindGrid();
}
CreateDataSource();
AddItem.Visible=false;
}
public void BindGrid() {
MyDataGrid.DataSource = CreateDataSource();
MyDataGrid.DataBind();
}
public void PanelShow(Object sender,EventArgs e)
{
vi.Visible = false;
AddItem.Visible = true;
Label1.Text= "";
}
public void AddItem_Click(Object sender,EventArgs e) {
datafile="../qualification/qualification.xml";
if (serial.Text=="")
{
Label1.Text="编号不能为空!";
AddItem.Visible = true;
}
else {
try{
Label1.Text="" ;
fout= new FileStream(Server.MapPath(datafile),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
DataSet ds = new DataSet();
ds.ReadXml(fout,XmlReadMode.InferSchema);
fout.Close();
DataRow newRow = ds.Tables[0].NewRow();
newRow["id"]=serial.Text;
newRow["otime"]=DateTime.Now.ToString("yyyy-M-d");
newRow["intro"]=intro.Text;
ds.Tables[0].Rows.Add(newRow);
fin = new FileStream(Server.MapPath(datafile),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
ds.WriteXml(fin, XmlWriteMode.WriteSchema);
fin.Close();
Label1.Text="";
serial.Text="";
intro.Text="";
}
catch (Exception edd)
{
Label1.Text="不能写入XML文件,因为 "+edd.ToString() ;
}
vi.Visible = true;
AddItem.Visible = false;
BindGrid();
}
}
void reset_Click(Object sender,EventArgs e)
{
serial.Text="";
intro.Text="";
vi.Visible = true;
AddItem.Visible = false;
}
public void MyDataGrid_Delete(Object sender,DataGridCommandEventArgs e)
{
if(((LinkButton)e.CommandSource).CommandName == "del")
{
int row = (int)e.Item.ItemIndex;
dv.Delete(row);
fin = new FileStream(Server.MapPath("../qualification/qualification.xml"),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
ds.WriteXml(fin, XmlWriteMode.WriteSchema);
fin.Close();
BindGrid();
}
}
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) {
MyDataGrid.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) {
MyDataGrid.EditItemIndex = -1;
BindGrid();
}public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) {
string id = e.Item.Cells[2].Text;
string intro = ((TextBox)e.Item.Cells[4].Controls[0]).Text;
dv.RowFilter = "id='"+id+"'";
if (dv.Count > 0) {
dv.Delete(0);
}
dv.RowFilter = "";
DataRow newRow = ds.Tables[0].NewRow();
newRow["id"]=id;
newRow["otime"]=DateTime.Now.ToString("yyyy-M-d");
newRow["intro"]=intro;
ds.Tables[0].Rows.Add(newRow);
fin = new FileStream(Server.MapPath("../qualification/qualification.xml"),FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
ds.WriteXml(fin, XmlWriteMode.WriteSchema);
fin.Close();
MyDataGrid.EditItemIndex = -1;
BindGrid();
}
</script>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="qualification">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" minOccurs="0" />
<xs:element name="intro" type="xs:string" minOccurs="0" />
<xs:element name="otime" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<qualification>
<id>02</id>
<intro>22</intro>
<otime>2003-2-18</otime>
</qualification>
<qualification>
<id>03</id>
<intro>3333</intro>
<otime>2003-2-18</otime>
</qualification>
</NewDataSet>
如果找不到,告诉我,发给你