4

ビルドios5.0以下を実行すると、Sqliteの応答が正しくなり、データが正常に取得されますが、ios6.0で実行すると、my.sqliteデータベースからデータをフェッチしようとしますが、ifの場合は実行されません。常にelse状態になります。私がしている間違ったことは何ですか?ifケースを実行できません。if(sqlite3_prepare_v2(database, sqlQuerry, -1, &querryStatement, NULL)==SQLITE_OK).

参考までに、このコードを確認してください。

NSLog(@"sqlite3_prepare_v2 = %d SQLITE_OK %d ",sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil),SQLITE_OK);

    if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK)
    {

        NSLog(@"sqlite3_step = %d SQLITE_ROW %d ",sqlite3_step(compiledStatement),SQLITE_ROW);
        while (sqlite3_step(compiledStatement)==SQLITE_ROW)
        {           if(sqlite3_column_text(compiledStatement, 2) != nil)
                modelObj.Name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

        }
    }
    else
    {

    }

iOS6.0のログ印刷

 sqlite3_prepare_v2 = 1 SQLITE_OK 0   
 sqlite3_step = 21 SQLITE_ROW 100 

iOS5.0ログ印刷の場合

sqlite3_prepare_v2 = 0 SQLITE_OK 0  
sqlite3_step = 100 SQLITE_ROW 100 
4

3 に答える 3

2

これをelseに配置すると、結果として発生するエラーを確認できます。

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK)
{

    NSLog(@"sqlite3_step = %d SQLITE_ROW %d ",sqlite3_step(compiledStatement),SQLITE_ROW);
    while (sqlite3_step(compiledStatement)==SQLITE_ROW)
    {           if(sqlite3_column_text(compiledStatement, 2) != nil)
        modelObj.Name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

    }
}
else{
    //error
    NSLog(@"Failed to open database. Error: %s",sqlite3_errmsg(database));
}
于 2012-10-09T23:51:42.887 に答える
1

デバイス(またはシミュレーター)からアプリを削除してから、クリーンアップしてビルドしてみてください

于 2012-09-29T09:46:40.667 に答える
0

私は100%確信していませんが、これに関して: NULLvoid *nilidです

したがって、これを変更できる場合:

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, nil)==SQLITE_OK)

これを聖霊降臨祭:

if(sqlite3_prepare_v2(sqlite, [strQuery UTF8String], -1, &compiledStatement, NULL)==SQLITE_OK)

nilをNULLに変更するだけです。繰り返しますが、100%確実ではありませんが、これだけがコードに表示されます。私はいつもNULLを使用します:)

この助けを願っています...

于 2012-10-15T18:44:06.570 に答える