gpt4 book ai didi

iphone - Sqlite 数据库在 ipad 中部署时返回 8

转载 作者:行者123 更新时间:2023-11-28 18:27:15 26 4
gpt4 key购买 nike

我的问题出现在设备上,但没有出现在模拟器上。

nDBres=sqlite3_prepare_v2(databaseConn, sqlStatement, -1, &compiledStatement,NULL)

这是我要运行的插入查询。在模拟器中它返回 0,而在设备中它返回 8。此后每当我尝试运行任何其他 写入操作时,应用程序都会崩溃。

我快疯了。

最佳答案

您可以查阅 sqlite3 错误代码列表作为 sqlite3 API 文档的一部分(http://www.sqlite.org/c3ref/c_abort.html。错误代码 8 是 SQLITE_READONLY(“尝试写入只读数据库”)。

您可能知道,iOS 沙盒应用程序在设备上运行,因此您必须确保在操作系统为创建应用程序可写文件而公开的区域之一中创建数据库。

关于如何在 iOS 上设置 sqlite3 项目有一个不错的教程 http://icodeblog.com/2008/08/19/iphone-programming-tutorial-creating-a-todo-list-using-sqlite-part-1/ .

从该教程中,您的问题最重要的部分可能是应用委托(delegate)中的 createEditableCopyOfDatabaseIfNeeded 方法。这说明了如何确保在您的应用首次启动时创建可编辑的数据库文件:

(注意,这不是我的代码……我是从 icodeblog.com 上的教程中复制它的,他们在那里详细解释了它)

- (void)applicationDidFinishLaunching:(UIApplication *)application {
[self createEditableCopyOfDatabaseIfNeeded];
[self initializeDatabase];

// Configure and show the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
}

// Creates a writable copy of the bundled default database in the application Documents directory.
- (void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence.
BOOL success;

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"todo.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];

if (success) return;

// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"todo.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}

关于iphone - Sqlite 数据库在 ipad 中部署时返回 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519086/

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