读取空表时出现异常

时间:2010-09-09 23:04:16

标签: iphone objective-c exception sqlite

我试图从表中读取数据。 最初它是空的。如果我当时试图阅读它将导致异常。 我的代码在下面给出

-(NSMutableArray *) selectDataFrom:(NSString *) tableName
{   
    NSString *qsql = [NSString stringWithFormat:@"SELECT * FROM '%@' ",tableName];  
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2( dataBase, [qsql UTF8String], -1, &statement, nil) == SQLITE_OK)
    {
        NSLog(@"INSIDE IF");                    
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {
            NSLog(@"INSIDE WHILE");         
            // my code
        }
    }
    return allData; 
}   

第一个NSLog(“INDISE IF”);打印出来。 但第二个不是印刷。

提到一些书来学习iPhone的sqlite3语句[例如:sqlite_prepare_v2();] 不是SQL

[抱歉我的英语不好]

这是完整的代码

-(NSMutableArray *) selectDataFrom:(NSString *) tableName
{

    allData = [[NSMutableArray alloc] init];
    NSString *qsql = [NSString stringWithFormat:@"SELECT * FROM '%@' ",tableName];
    sqlite3_stmt *statement;

    if (sqlite3_prepare_v2( dataBase, [qsql UTF8String], -1, &statement, nil) == SQLITE_OK)
    {       


        while (sqlite3_step(statement) == SQLITE_ROW) 
        {
            NSLog(@"REACHED 1");            
            myProgram = [[Programs alloc] init];    

            char *date  = (char *) sqlite3_column_text(statement, 0);
            myProgram.nss_Date = [[NSString alloc] initWithUTF8String:date];            

            char *type  = (char *) sqlite3_column_text(statement, 3);
            myProgram.nss_Type = [[NSString alloc]initWithUTF8String:type];

            [nsma_allDonorsMA addObject:d_OneDonor];        
        }
    }
    else {
        //      NSLog(@"failed to select data");

    }
    return allData;
}

2 个答案:

答案 0 :(得分:1)

尝试在异常上启用断点并在调试器中运行您的应用。它会准确显示您呼叫objectAtIndex:的位置。 (在上面的代码中不是

答案 1 :(得分:0)

你的sqlite3_finalize() ??

在哪里

您应该在sqlite3_prepare_v2块中释放sqlite3_stmt结构,如下所示。

sqlite3_stmt *sql_stmt; 
if (sqlite3_prepare_v2(...) == SQLITE_OK)
{
    ....

    sqlite3_finalize(sql_stmt);
}