Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone SQLite可以在设备上工作,但不能在模拟器中工作。sqlite3\u准备\u v2失败_Iphone_Objective C_Sqlite - Fatal编程技术网

Iphone SQLite可以在设备上工作,但不能在模拟器中工作。sqlite3\u准备\u v2失败

Iphone SQLite可以在设备上工作,但不能在模拟器中工作。sqlite3\u准备\u v2失败,iphone,objective-c,sqlite,Iphone,Objective C,Sqlite,我在iPhone模拟器上使用SQLite时遇到问题。我把它简化为一个简单的测试应用程序。sqlite3\u prepare\u v2失败。但真正的设备运行良好 我使用sqlite3创建了一个数据库,并将其添加到我的资源中。在我的代码中,在viewDidLoad中,我调用createEditableCopyOfDatabaseIfNeeded(这是一种常见的、广泛使用的方法,随处可见)。然后我称之为:- - (void) queryDatabase { sqlite3 *database

我在iPhone模拟器上使用SQLite时遇到问题。我把它简化为一个简单的测试应用程序。sqlite3\u prepare\u v2失败。但真正的设备运行良好

我使用sqlite3创建了一个数据库,并将其添加到我的资源中。在我的代码中,在viewDidLoad中,我调用createEditableCopyOfDatabaseIfNeeded(这是一种常见的、广泛使用的方法,随处可见)。然后我称之为:-

- (void) queryDatabase {

    sqlite3 *database;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myDatabase.sql"];
    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {

        NSMutableString *result = [[NSMutableString alloc] init]; 
        const char *sqlStatement = "select * from people";
        sqlite3_stmt *compiledStatement;
        if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {

            while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
            NSString *firstname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
            NSString *surname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
            [result appendFormat:@"%@ %@\n", firstname, surname];
        }
    [resultView setText:result];
    }
    else {
        [resultView setText:@"Problem querying database"];
    }

    sqlite3_finalize(compiledStatement);
    [result release];

    }

    sqlite3_close(database);
}

在模拟器上,sqlite3\u prepare\u v2没有返回SQLITE\u OK

您能告诉我,您得到了什么错误吗? 要查找错误,可以使用

    if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) != SQLITE_OK) {
    NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

你能告诉我你犯了什么错误吗? 要查找错误,可以使用

    if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) != SQLITE_OK) {
    NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

确保您已从模拟器中删除应用程序图标,并在生成和运行之前清除所有目标。这可能会解决您的问题。

确保您已从模拟器中删除应用程序图标,并在构建和运行之前清除所有目标。这可能会解决您的问题。

从模拟器卸载应用程序并重新安装可能会起作用。

从模拟器卸载应用程序并重新安装可能会起作用