2012-12-26 23 views
1

我是OSX應用程序開發的新手。我試圖在sqlite數據庫中存儲4個值(Date,value1,value2,value3)。如果在現有日期中輸入新記錄,我需要更新記錄的最後3個字段。我該怎麼做。我的代碼插入到數據庫中給出如下在OSX中更新sqlite3數據庫的列

- (void) addToDatabase:(Day *)sampleDay 
{ 
    databasePath = [Database_Access createDirectory]; 

    const char *dbpath = [databasePath UTF8String]; 

    if (sqlite3_open(dbpath, &database) == SQLITE_OK) 
    { 
    char *errMsg; 


    NSString *str= [NSString stringWithFormat:@"INSERT INTO TABLEOBJ (DATE,NIDHIN,PAI,RUBEN) VALUES ('%@',%li,%li,%li)", sampleDay.date, sampleDay.value1, sampleDay.value2, sampleDay.value3]; 

    const char *sql_stmt = [str UTF8String]; 

    if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) 
    { 

    } 

    sqlite3_close(database); 

    } 
    else 
    { 

    } 
} 

什麼都包括在內,以滿足這一要求?

+1

所以iOS或OS X?你的標題說iOS,問題和標籤建議OS X.另外,**正好**不關心你目前的代碼。 Furhtermore,你有什麼樣的「要求」? – 2012-12-26 08:25:46

+0

您正在將日期存儲爲文本或dateTime對象嗎? – zahreelay

+0

對不起我的錯 - OSX – nbs

回答

5

首先檢查已經存在的日期或不

if (sqlite3_open(dbpath, &quizDB) == SQLITE_OK) 
{ 
     sqlite3_stmt *statement; 

     // ================Read date with current date value table=================== 
     NSString *readDate = [NSString stringWithFormat: @"SELECT * FROM TABLEOBJ WHERE DATE = %@",sampleDay.date]; 

     const char *readDate_stmt = [readDate UTF8String]; 
     if (sqlite3_prepare_v2(quizDB, readDate_stmt, -1, &statement, NULL) == SQLITE_OK) 
     { 
      NSString *str; 

      if (sqlite3_step(statement) == SQLITE_ROW) 
      { 
       str = [NSString stringWithFormat:@"INSERT INTO TABLEOBJ (DATE,NIDHIN,PAI,RUBEN) VALUES ('%@',%li,%li,%li)", sampleDay.date, sampleDay.value1, sampleDay.value2, sampleDay.value3]; 
      } 
      else 
      { 
       str = [NSString stringWithFormat:@"UPDATE TABLEOBJ SET NIDHIN = %li, PAI = %li, RUBEN = %li where DATE = %@", sampleDay.value1, sampleDay.value2, sampleDay.value3,sampleDay.date]; 
      } 

      // Do the execution steps 
      sqlite3_finalize(statement); 
     } 
    } 
相關問題