1.问题描述
今天做一个数据维护功能,数据库中有一张表A,需要定期维护Excel文件中的数据到这张表,Excel文件的数据与表A的数据关系为:Excel包含A;
需要做的工作是,过滤掉A表中已有的数据,剩下的就是需要更新的数据了,然后把两个数据结构的差集插入到表A中。
2.解决办法
将Excel中的数据通过OleDb读取到DataTable中,记为dt1;将表A中的数据读取到DataTable中,记为dt2;创建一个DataTable对象dt3用来接受差集。然后将dt3插入到表A。
代码如下:
DataTable dt3 = new DataTable();//接受差集的dt3
dt3.Columns.Add("HPHM", typeof(string));//初始化dt3的数据结构,与dt1和dt2保持一致
dt3.Columns.Add("HPZL", typeof(string));
dt3.Columns.Add("CLLX", typeof(string));
dt3.Columns.Add("SYXZ", typeof(string));
dt3.Columns.Add("SYR", typeof(string));
foreach (DataRow row in dt1.Rows)//遍历excel数据集
{
DataRow[] rows = dt2.Select("HPHM='" + row[0].ToString().Trim() + "' and HPZL='" + row[1].ToString().Trim() + "'");//查询excel数据集是否存在于表A,如果存在赋值给DataRow集合
if (rows.Length == 0)//判断如果DataRow.Length为0,即该行excel数据不存在于表A中,就插入到dt3
{
dt3.Rows.Add(row[0], row[1], row[2], row[3], row[4]);
}
}