0

私のviewWillAppearメソッドにこのコードがあります:

 sqlite3 *database;
if (sqlite3_open([[self dataFilePath] UTF8String], &database)
    != SQLITE_OK) { 

    sqlite3_close(database);
    NSAssert(0, @"Failed to open database");
}
sqlite3_stmt *statement;

//why is this if statement failing?
if (sqlite3_prepare_v2(database, [sqlStatement UTF8String],
                       -1, &statement, nil) == SQLITE_OK) {

入力せずに最初のifステートメントを渡します(これは良いことです)。2番目のifステートメントが問題です。

sqlStatementはSELECT*FROM food WHERE foodType='fruit'の形式です。なぜifステートメントに含まれないのかわかりません。どんな助けでもいただければ幸いです。

4

3 に答える 3

1

問題はコードにあるのではなく、sqliteファイルをエクスポートする方法にあることになりました。これは、実際のテーブルではなく、INSERTステートメントに関するシリーズでした。

于 2012-06-25T17:55:28.233 に答える
0

要件に応じて変更を加えます...

-(void) readDataFromDatabase
{
    chapterAry = [[NSMutableArray alloc] init];

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    NSString *documentsDir = [documentPaths objectAtIndex:0];

    databasePath = [documentsDir stringByAppendingPathComponent:@"QuotesApp.sqlite"];

    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        const char *sqlStatement ="select * from MsExcelTutorial";

        sqlite3_stmt *compiledStatement;

        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
        {
            while(sqlite3_step(compiledStatement)==SQLITE_ROW)
            {
                NSNumber *chapterId = [NSNumber numberWithInt:(int)sqlite3_column_int(compiledStatement, 0)];

                NSString *chapter = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];

                NSString *link = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

                NSString *bookmark = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];

                NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:chapterId,@"chapterId",chapter,@"chapter",link,@"link",bookmark,@"bookmark", nil];

                [chapterAry addObject:dic];
            }
        }
        sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database);
}
于 2012-06-21T05:30:32.200 に答える
-1
NSString *DBPath = [ClsCommonFunctions GetDatabasePath];
if ([self OpenDBWithPath:DBPath])//Method to open database connection
{
//filesDB is database object 
    // Setup the SQL Statement and compile it for faster access
    const char *sqlStatement = "select fileID,filePath from tblFiles where  isUploadPending =1";
    sqlite3_stmt *compiledStatement;
    if(sqlite3_prepare_v2(filesDB, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {

        while(sqlite3_step(compiledStatement) == SQLITE_ROW) 
        {
            // u Need to get data from database...                


        }
    }
    // Release the compiled statement from memory
    sqlite3_finalize(compiledStatement);
    sqlite3_close(filesDB);
}

それを通過しますそれは動作します

于 2012-06-21T05:59:15.900 に答える