XML 文件:
<?xml version="1.0" encoding="GB2312"?>
<Test>
<Test1>
<UID>4</UID>
<UName>sa1</UName>
<Birthday>2007-09-17 18:52:00</Birthday>
</Test1>
<Test1>
<UID>5</UID>
<UName>sa2</UName>
<Birthday>2007-09-18 18:52:00</Birthday>
</Test1>
<Test1>
<UID>6</UID>
<UName>sa3</UName>
<Birthday>2007-09-19 18:52:00</Birthday>
</Test1>
</Test>
private void button2_Click(object sender, EventArgs e)
{
string com;
com = "Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=bsjdw0;User ID=sa;Password=;Server Name=SERVER;Network Protocol=Winsock;Server Port Address=5000 providerName=System.Data.OleDb"; System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(com);
try
{
conn.Open();
string sql = "select * from Test";
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
ds.Tables.Add("Test");
da.Fill(ds.Tables["Test"]);
DataSet ds2 = new DataSet();
ds2.ReadXml(@"d:\test.xml");
DataTable dt = ds2.Tables["Test"]; //dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };
//ds.Tables["Test"].PrimaryKey = new DataColumn[] { ds.Tables["Test"].Columns[0] }; ds.Tables["Test"].Merge(dt, true, MissingSchemaAction.Ignore);//关键所在,合并两个ds到一张表中
this.dataGridView1.DataSource = ds.Tables["Test"];
OleDbCommandBuilder oleb = new OleDbCommandBuilder(da); if (ds.Tables["Test"].GetChanges() != null)
{
da.Update(ds.Tables["Test"]);
ds.AcceptChanges();//真正的更新数据库 调用 ds.RejectChanges() 取消更新。
MessageBox.Show("更新成功!");
}
else
MessageBox.Show("更新失败!");
conn.Close();
}
catch (Exception ex)
{
conn.Close();
MessageBox.Show(ex.Message);
}
}
<?xml version="1.0" encoding="GB2312"?>
<Test>
<Test1>
<UID>4</UID>
<UName>sa1</UName>
<Birthday>2007-09-17 18:52:00</Birthday>
</Test1>
<Test1>
<UID>5</UID>
<UName>sa2</UName>
<Birthday>2007-09-18 18:52:00</Birthday>
</Test1>
<Test1>
<UID>6</UID>
<UName>sa3</UName>
<Birthday>2007-09-19 18:52:00</Birthday>
</Test1>
</Test>
private void button2_Click(object sender, EventArgs e)
{
string com;
com = "Provider=Sybase.ASEOLEDBProvider.2;Initial Catalog=bsjdw0;User ID=sa;Password=;Server Name=SERVER;Network Protocol=Winsock;Server Port Address=5000 providerName=System.Data.OleDb"; System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(com);
try
{
conn.Open();
string sql = "select * from Test";
System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
ds.Tables.Add("Test");
da.Fill(ds.Tables["Test"]);
DataSet ds2 = new DataSet();
ds2.ReadXml(@"d:\test.xml");
DataTable dt = ds2.Tables["Test"]; //dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };
//ds.Tables["Test"].PrimaryKey = new DataColumn[] { ds.Tables["Test"].Columns[0] }; ds.Tables["Test"].Merge(dt, true, MissingSchemaAction.Ignore);//关键所在,合并两个ds到一张表中
this.dataGridView1.DataSource = ds.Tables["Test"];
OleDbCommandBuilder oleb = new OleDbCommandBuilder(da); if (ds.Tables["Test"].GetChanges() != null)
{
da.Update(ds.Tables["Test"]);
ds.AcceptChanges();//真正的更新数据库 调用 ds.RejectChanges() 取消更新。
MessageBox.Show("更新成功!");
}
else
MessageBox.Show("更新失败!");
conn.Close();
}
catch (Exception ex)
{
conn.Close();
MessageBox.Show(ex.Message);
}
}
{
DataSet ds1 = new DataSet();
string connstr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\db1.mdb";
conn = new OleDbConnection(connstr);
string sqlstr = "SELECT * from table1 ";
da = new OleDbDataAdapter(sqlstr, conn);
ds = new DataSet();
da.Fill(ds, "table1");
ds1.ReadXml(@"C:\Documents and Settings\Administrator\桌面\ds.xml");
dt = ds1.Tables[0];
ds.Tables[0].Merge(dt,true,MissingSchemaAction.Ignore);
OleDbCommandBuilder dcmdb = new OleDbCommandBuilder(da);
}private void BtnUpdate_Click(object sender, EventArgs e)
{
try
{
da.Update(ds.GetChanges(), ds.Tables[0].ToString());
}
catch
{
}
}