你好朋友,如何获取最新更新值在sqlite3
我有一个应用程序,将与数据库的同步到web服务。我有一个表格列表,我想更新,删除并插入列表。当用户点击同步按钮时,我想发送将在数据库中更新或更改的数据。该Web服务是不同的添加,更新或删除我想只发送更新的记录。
对于这个,我可以做什么的任何建议。
由于提前, Hardik帕特尔
你好朋友,如何获取最新更新值在sqlite3
我有一个应用程序,将与数据库的同步到web服务。我有一个表格列表,我想更新,删除并插入列表。当用户点击同步按钮时,我想发送将在数据库中更新或更改的数据。该Web服务是不同的添加,更新或删除我想只发送更新的记录。
对于这个,我可以做什么的任何建议。
由于提前, Hardik帕特尔
您可以维护时间戳一个额外的列。 因此,每当记录被更改时,您应该更新时间戳。 (record_timestamp)
您必须保持将数据成功发送到服务器的时间。 (LAST_UPDATED_TIMESTAMP)
因此,在同步的时候,你会只有那些记录发送到服务器,其 record_timestamp> LAST_UPDATED_TIMESTAMP
的LAST_UPDATED_TIMESTAMP将执行成功同步每次更新。
我希望这会有所帮助。
此链接将帮助您在sqlite的Timestamp comparison
比较时间戳您使用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;
}
有趣的问题hardik ... – Android