情况是这样的:把某表中的数据 WriteXml 到一个 xml 文件中,通过网络传输给另外一个程序,网络端那边返回执行成功后,将该 xml 文件 DataTable.ReadXml() , 更新该 DataTable 中的 日期字段, 最后更新到导出源(原表)下面是代码: public void ImportTableFromXml(string tableName, string filename)
{
DataTable dt = new DataTable();
dt.ReadXml(filename);
SqlDataAdapter sqlda = new SqlDataAdapter(string.Format("select * from {0}", tableName), SqlConn);
SqlCommandBuilder scb = new SqlCommandBuilder(sqlda);
sqlda.UpdateCommand = scb.GetUpdateCommand();
sqlda.InsertCommand = scb.GetInsertCommand();
sqlda.DeleteCommand = scb.GetDeleteCommand(); DataSet ds = new DataSet("dbDataSet");
sqlda.Fill(ds); foreach (DataRow row in dt.Rows)
{
row["exportDate"] = DateTime.Now;
}
ds.Tables.Clear();
ds.Merge(dt);
DataTable update = dt.GetChanges(DataRowState.Modified); // datatable == null
//sqlda.Update(update); DataTable deletes = dt.GetChanges(DataRowState.Deleted); // datatable == null
//sqlda.Update(deletes);
DataTable inserts = dt.GetChanges(DataRowState.Added); // 只有这个 dataTable 不为 null
//sqlda.Update(inserts); //sqlda.Update(ds,tableName);
//sqlda.Update(dt); }
问:我这么写对不对, 有别的办法吗?
{
DataTable dt = new DataTable();
dt.ReadXml(filename);
SqlDataAdapter sqlda = new SqlDataAdapter(string.Format("select * from {0}", tableName), SqlConn);
SqlCommandBuilder scb = new SqlCommandBuilder(sqlda);
sqlda.UpdateCommand = scb.GetUpdateCommand();
sqlda.InsertCommand = scb.GetInsertCommand();
sqlda.DeleteCommand = scb.GetDeleteCommand(); DataSet ds = new DataSet("dbDataSet");
sqlda.Fill(ds); foreach (DataRow row in dt.Rows)
{
row["exportDate"] = DateTime.Now;
}
ds.Tables.Clear();
ds.Merge(dt);
DataTable update = dt.GetChanges(DataRowState.Modified); // datatable == null
//sqlda.Update(update); DataTable deletes = dt.GetChanges(DataRowState.Deleted); // datatable == null
//sqlda.Update(deletes);
DataTable inserts = dt.GetChanges(DataRowState.Added); // 只有这个 dataTable 不为 null
//sqlda.Update(inserts); //sqlda.Update(ds,tableName);
//sqlda.Update(dt); }
问:我这么写对不对, 有别的办法吗?
public void ImportTableFromXml(string tableName, string filename)
{
DataTable dt = new DataTable();
dt.ReadXml(filename); SqlDataAdapter sqlda = new SqlDataAdapter(string.Format("select * from {0}", tableName), SqlConn);
SqlCommandBuilder scb = new SqlCommandBuilder(sqlda);
sqlda.UpdateCommand = scb.GetUpdateCommand();
sqlda.InsertCommand = scb.GetInsertCommand();
sqlda.DeleteCommand = scb.GetDeleteCommand();
DataTable odt = new DataTable(tableName);
sqlda.Fill(odt); dt.AcceptChanges(); foreach (DataRow row in dt.Rows)
{
row["exportDate"] = DateTime.Now;
} odt.Clear();
odt = dt.Copy(); DataTable update = odt.GetChanges(DataRowState.Modified);
sqlda.Update(update);
}