objective-c - 在 OSX 中更新 sqlite3 数据库的列

标签 objective-c macos cocoa sqlite

我是 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 
  {

  }
}

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

最佳答案

首先检查日期是否存在

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

关于objective-c - 在 OSX 中更新 sqlite3 数据库的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037865/

相关文章:

macos - 使用 NSDistributedNotificationCenter 对 iTunes 启动使用react

objective-c - 混淆 NSTextStorage 中的编码异常

ios - SK产品多文件

cocoa - 独立重用已声明的强大属性

objective-c - 使用 ARC 时是否在 dealloc 中将属性设置为 nil?

objective-c - 调整 NSView 的大小使其小于其 subview ?

c++ - 从 C 代码调用具有复杂参数和复杂返回类型的 C++ 函数

ios - 如何生成不分页的PDF

iphone - 我的 UIView 上已经有渐变,插入新渐变时遇到问题

c++ - 难以在 Mac 上执行基本的 OpenCV 示例