gpt4 book ai didi

objective-c - sqlite3_prepare_v2 正在获取 SQLITE_ERROR

转载 作者:行者123 更新时间:2023-12-01 20:07:03 24 4
gpt4 key购买 nike

我已经为此工作了几个小时,必须让它工作!它阻碍了 iPhone 应用程序的发布...我第一次使用 SQLite。我已遵循所有建议,但我的 sqlite3_prepare_v2 调用每次都会收到 SQLITE_ERROR (1)!

这是我的 Controller 中的代码:

        NSString *query = @"SELECT * FROM QandA ORDER BY random() LIMIT 1";
// const char *sqlStatement = "SELECT * FROM QandA ORDER BY random() LIMIT 1";
sqlite3_stmt *compiledStatement;

// sqlite3_stmt *statement;
int prepareStatus = sqlite3_prepare_v2(database, [query UTF8String],
-1, &compiledStatement, NULL);
if (prepareStatus == SQLITE_OK) {...

您会注意到,我尝试使用“char *”也无济于事(以及其他尝试)。我的数据库可以正常打开:

    databaseName = @"Facts.sqlite";
// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSLog(@"databasePath = %@", databasePath);

int dbOpenStatus = sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_READWRITE, NULL);

从我的 Controller 界面:

    NSString *databaseName;
NSString *databasePath;

我已经检查了调试器,一切看起来都很好,但是准备语句失败了。我不知道如何记录它试图编译的语句...我假设/希望这正是我的 SELECT 所说的。

有人可以帮忙吗?我很绝望。标记

最佳答案

找到答案here 。我必须使用它来代替数据库文件的路径:

[[NSBundle mainBundle]pathForResource:@"Facts"extension:@"sqlite"];

这给出了一个稍微不同的路径(一个额外的目录) - 一旦我使用它,它就起作用了!希望这对其他人有帮助...我在这方面花了很多时间。

关于objective-c - sqlite3_prepare_v2 正在获取 SQLITE_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com