我正在iOS应用中进行同步。我的文档文件夹中已有一组表,我在同步期间从服务器下载数据到一组新表中。我正在比较单个表的数量,如果它们是相同的,我使用自然连接来检查它们实际上是相同的。如果它们是相同的,那么我的内容是最新的,我不需要对我当前的表集进行任何更改,否则我将获取新的表集并将新数据存储为当前表。 / p>
问题在于,当我对某些表进行自然连接时,虽然我在SQLITEMANAGER中看到两个表的相同信息,但是自然连接会返回错误的答案。不知道为什么。 count_together是错误的,即使值是相同的。
这是我实施检查的方式(仅用于说明):
singleton.table = YES;
int count_table1 = 0;
int count_table2 = 0;
int count_together = 0;
NSMutableArray *arrayTables = [[NSMutableArray alloc] initWithObjects:@"DATA",@"TABLE",@"NUMBERS",nil];
NSMutableArray *arrayTables2 = [[NSMutableArray alloc] initWithObjects:@"DATA2",@"TABLE2",@"NUMBERS2", nil];
for(int i =0; i<[arrayTables count]; i++)
{
count_table1 = [databaseManager checkCountOfTable:[NSString stringWithFormat:@"SELECT COUNT(*) FROM %@",[arrayTables objectAtIndex:i]]];
count_table2 = [databaseManager checkCountOfTable:[NSString stringWithFormat:@"SELECT COUNT(*) FROM %@",[arrayTables2 objectAtIndex:i]]];
NSLog(@"Count of Table 1 is %i",count_table1);
NSLog(@"Count of Table 2 is %i",count_table2);
if (singleton.table == YES)
{
if(count_table1 != count_table2)
{
singleton.table = NO;
}
else
{
count_together = [databaseManager checkCountOfTable:[NSString stringWithFormat: @"SELECT COUNT(*) FROM (%@ NATURAL JOIN %@)",[arrayTables objectAtIndex:i],[arrayTables2 objectAtIndex:i]]];
NSLog(@"Count of Table 1 is %i",count_table1);
NSLog(@"Count of Tables Together is %i",count_together);
if (count_table1 == count_together)
{
singleton.table = YES;
}
else
{
singleton.table = NO;
}
}
}
}
需要一些指导,欢迎提出建议。
答案 0 :(得分:0)
问题是表中有一些空列。因此,这些表上的Natural JOIN不起作用。必须确保表没有任何空列,并且NATURAL JOIN将正常工作。