【问题标题】:Update columns of sqlite3 database in OSX在 OSX 中更新 sqlite3 数据库的列
【发布时间】:2012-12-26 16:37:30
【问题描述】:

我是 OSX 应用程序开发的新手。我正在尝试在 sqlite 数据库中存储 4 个值(日期、值 1、值 2、值 3)。如果使用现有日期输入新记录,我需要更新记录的最后 3 个字段。我该怎么做。下面给出了我要插入数据库的代码

- (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 
  {

  }
}

为了满足这一要求,需要包括哪些内容?

【问题讨论】:

  • 那么 iOS 还是 OS X?您的标题说 iOS,问题和标签建议使用 OS X。另外,关于您当前拥有的代码,确切地说 是什么?此外,您有什么样的“要求”?
  • 您将日期存储为文本或 dateTime 对象?
  • 我将日期作为文本存储在数据库中
  • 那么您可以使用@Anusha 的解决方案

标签: objective-c macos cocoa sqlite


【解决方案1】:

先检查日期是否存在

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

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2021-05-24
    • 2016-02-21
    • 1970-01-01
    相关资源
    最近更新 更多