111,097
社区成员




Hashtable hashBefore = ToHashTable(dtBefore); //ToHashTable的方法在下面。
Hashtable hashAfter = ToHashTable(dtAfter);
for (int j = 0; j < dtAfter.Rows.Count; j++)
{
if (hashBefore[dtAfter.Rows[j][FieldName].ToString()] != null)
{
if (hashBefore[dtAfter.Rows[j][FieldName].ToString()].ToString() != hashAfter[dtAfter.Rows[j][FieldName].ToString()].ToString())
{
for (int k = 0; k < arrayBefore.Length; k++)
{
if (arrayBefore[k] != arrayAfter[k])
{
count++;
if (count < 36)
{
sqlFields += "para" + count.ToString() + ",para_start" + count.ToString() + ",para_end" + count.ToString() + ",";
sqlValues += "'" + arrayBefore[k].Split('@')[0] + "','" + arrayBefore[k].Split('@')[1] + "','" + arrayAfter[k].Split('@')[1] + "',";
}
}
}
//arrayBefore = null;
//arrayAfter = null;
DBBean.insertR("", "", "Table", sqlFields.Substring(0, sqlFields.Length - 1), sqlValues.Substring(0, sqlValues.Length - 1), "");
}
}
}
//先转成Hash。hash的结构是key是主键列,Value就是Columns的记录加起来。
protected Hashtable ToHashTable(DataTable dt)
{
Hashtable hash = new Hashtable();
DataTable dtTemp = dt;
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
string str = string.Empty;
for (int j = 0; j < dtTemp.Columns.Count; j++)
{
str += dtTemp.Columns[j].ColumnName + "@" + dtTemp.Rows[i][j].ToString() + ",";
}
str = str.Substring(0, str.Length - 1);
if (!hash.ContainsKey(dtTemp.Rows[i][FieldName].ToString()))
{
hash.Add(dtTemp.Rows[i][FieldName].ToString(), str);
}
}
return hash;
}