你好朋友,如何獲取最新更新值在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