【问题标题】:can't write to sqlite database无法写入 sqlite 数据库
【发布时间】:2020-08-03 16:51:45
【问题描述】:

我的程序需要操作数据库,现在我使用了'FMDB'框架并关闭了我的xcode项目中的沙箱。

但我遇到了麻烦,很奇怪:在我自己的电脑上,读/写操作都没有问题。 (归档为应用程序后),但在另一台电脑上,它只能读,不能写,为什么? (数据库位于此应用的源文件夹中)。

问题不是找不到数据库文件,因为我在其他电脑上记录了数据库路径,没错。

我的系统是“Mac OS 10.15”,我在 Xcode 中使用的是版本“10.13”的 SDK。

读操作:↓

+ (charData *)getCharacteData:(NSString *)character
{

    NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"CN_Characters" ofType:@"DB"];
    FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
    [db open];

    FMResultSet *res = [db executeQuery:[NSString stringWithFormat:@"SELECT * FROM Proverbs WHERE character = '%@';",character]];
    charData *charDta = [charData new];
    if ([res next]) {
        charDta.character = [NSString stringWithString:[res stringForColumn:@"character"]];
        charDta.explanation = [NSString stringWithFormat:@"%@",[res stringForColumn:@"explanation"]];
    } else {
        return NULL;
    }
    [db close];
    return charDta;
}

写操作:↓

+ (BOOL)saveCharacterDataWithCharacter:(NSString *)character Explanation:(NSString *)explanation
{
    NSString *databasePath = [[NSBundle mainBundle] pathForResource:@"CN_Characters" ofType:@"DB"];
    printf("databasePath: %s\n",databasePath.UTF8String);
    FMDatabase *db = [FMDatabase databaseWithPath:databasePath];
    [db open];

    BOOL res = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Proverbs SET explanation = '%@' WHERE character = '%@'",explanation,character]];

    [db close];
    return res;
}

是权限问题吗?

【问题讨论】:

    标签: objective-c database sqlite fmdb


    【解决方案1】:

    当您运行您的应用程序时,您需要将您的文件从包中复制到文档目录中。

    if([[NSFileManager defaultManager] copyItemAtPath: databasePath 
              toPath:[documentsDirectory stringByAppendingPathComponent:@"CN_Characters.DB"]
              error:&error]){
    

    否则将是只读的。

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多