我要做的是查询数据库,然后与已保存到XML的同一数据库表中的过去查询进行比较。我以为我可以使用DataTables来做到这一点,但看起来他们将没有此功能。
我试图将XML文件读入数据集,然后使用此方法。
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"preferenceName"];
但这只是返回了所有内容。我正在寻找的是在数据库表中获取从一天到下一天更改的值。
答案 0 :(得分:0)
get values that were changed
已更改的行的键?每一行的列也不同吗?
您所追求的需要进一步定义。如果将查询结果保存到表中,则也可以不离开数据库而完成此操作。然后,您可以“超快地从june中选择rowkey并在june.whoID = july.whoID上的july中加入june.importantColumn <> july.importantColumn”。
答案 1 :(得分:0)
我通过声明主键解决了我的问题。这允许比较返回已更改的值。我还不得不在比较之前将两个文件都写到XML,因为它会导致类型不匹配错误。
public DataTable compareConfigs(DataTable today, DataTable yesterday)
{
DataTable dtCurrent = today;
DataTable dtLast = yesterday;
dtLast.AcceptChanges();
DataTable dtChanges = null;
dtLast.Merge(dtCurrent, true);
dtChanges = dtLast.GetChanges(DataRowState.Unchanged);
return dtChanges;
}
static void Main(string[] args)
{
// Declaring the DataSets
DataSet dataSet = new DataSet();
DataSet dataSet2 = new DataSet();
// reading in an XML file to DataTable
dataSet.ReadXml(@"Path to saved XML query");
DataTable yesterday = dataSet.Tables[0];
yesterday.PrimaryKey = new DataColumn[] { yesterday.Columns["Key"]};
// reading in an xml file to datatable
dataSet2.ReadXml(@"Path to saved XML query");
DataTable today = dataSet2.Tables[0];
today1.PrimaryKey = new DataColumn[] { today1.Columns["Key"]};
ConfigCompare comp = new ConfigCompare();
DataTable mismatch = comp.compareConfigs(today, yesterday);
}
}