2011-11-01 41 views
2

你好朋友,如何獲取最新更新值在sqlite3

我有一個應用程序,將與數據庫的同步到web服務。我有一個表格列表,我想更新,刪除並插入列表。當用戶點擊同步按鈕時,我想發送將在數據庫中更新或更改的數據。該Web服務是不同的添加,更新或刪除我想只發送更新的記錄。

對於這個,我可以做什麼的任何建議。

由於提前, Hardik帕特爾

+0

有趣的問題hardik ... – Android

回答

2

您可以維護時間戳一個額外的列。 因此,每當記錄被更改時,您應該更新時間戳。 (record_timestamp

您必須保持將數據成功發送到服務器的時間。 (LAST_UPDATED_TIMESTAMP

因此,在同步的時候,你會只有那些記錄發送到服務器,其 record_timestamp> LAST_UPDATED_TIMESTAMP

LAST_UPDATED_TIMESTAMP將執行成功同步每次更新。

我希望這會有所幫助。

此鏈接將幫助您在sqlite的Timestamp comparison

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; 
}