Hello Friends,
我有一个应用程序,它将与数据库同步到Web服务。我有一个表列表,我想更新,删除和插入列表。当用户单击同步按钮时,我想发送将在数据库中更新或更改的数据。添加,更新或删除的Web服务不同我想只发送更新的记录。
为此,我可以为此提出任何建议。
提前致谢, Hardik Patel
答案 0 :(得分:2)
您可以为时间戳维护一个额外的列。 因此,每当更改记录时,您应该更新时间戳。 (的 record_timestamp 强>)
您必须保持将数据成功发送到服务器的时间。 (的 LAST_UPDATED_TIMESTAMP 强>)
因此,在同步时,您只会将这些记录发送给服务器 record_timestamp> LAST_UPDATED_TIMESTAMP 强>
每次成功同步时, last_updated_timestamp 都会更新。
我希望这会有所帮助。
此链接将帮助您比较sqlite Timestamp comparison
中的时间戳答案 1 :(得分:0)
您使用sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
- (NSNumber *)executeSQL:(NSString *)sql withCallback:(void *)callbackFunction context:(id)contextObject {
NSString *path = [self pathToDB];
sqlite3 *db = NULL;
int rc = SQLITE_OK;
NSInteger lastRowId = 0;
rc = sqlite3_open([path UTF8String], &db);
if(SQLITE_OK != rc) {
NSLog(@"Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return nil;
}else {
char *zErrMsg = NULL;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
rc = sqlite3_exec(db, [sql UTF8String], callbackFunction, (void*)contextObject, &zErrMsg);
if(SQLITE_OK != rc) {
NSLog(@"Can't run query '%@' error message: %s\n", sql, sqlite3_errmsg(db));
sqlite3_free(zErrMsg);
}
lastRowId = sqlite3_last_insert_rowid(db);
sqlite3_close(db);
[pool release];
}
NSNumber *lastInsertRowId = nil;
if(0 != lastRowId) {
lastInsertRowId = [NSNumber numberWithInteger:lastRowId];
}
return lastInsertRowId;
}