无法写入sqlite数据库

问题描述 投票:0回答:1

我的程序需要操作数据库,现在我使用了“ 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;
}

这是权限问题吗?

我的程序需要操作数据库,现在我使用了'FMDB'框架并关闭了xcode项目中的沙箱。但是我遇到了麻烦,这很奇怪:在我自己的计算机上,没有读写操作...

objective-c database sqlite fmdb
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.