我有一个项目,我在其中创建了 sqlite DB。现在我想从 Sqlite 读取数据并存储NSMutableArray
和显示UITableView
这是我的代码,但是当我逐步编译这个程序时。这个编译从这一行跳转:
if(sqlite3_prepare_v2(database1, [sqlStatement_userInfo UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
到这条线并且不工作:
sqlite3_close(database1);
这是我的完整代码:
/*==================================================================
METHOD FOR READING DATA FROM DATABASE
==================================================================*/
-(NSMutableArray *)readInformationFromDatabase
{
array = [[NSMutableArray alloc] init];
// Setup the database object
sqlite3 *database2;
// Open the database from the users filessytem
if(sqlite3_open([[self DatabaseSqlite] UTF8String], &database2) == SQLITE_OK)
{
// Setup the SQL Statement and compile it for faster access
//SQLIte Statement
NSString *sqlStatement =[NSString stringWithFormat:@"Select ID from Table1 where ParentID = 0"];
sqlite3_stmt *compiledStatement2;
if(sqlite3_prepare_v2(database2, [sqlStatement UTF8String], -1, &compiledStatement2, NULL) == SQLITE_OK)
{
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement2) == SQLITE_ROW)
{
// Init the Data Dictionary
_OwnID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement2, 0)];
}
}
else
{
NSLog(@"No Data Found");
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement2);
}
sqlite3_close(database2);
ThisParentID = _OwnID;
do {
// Setup the database object
sqlite3 *database1;
// Open the database from the users filessytem
if(sqlite3_open([[self DatabaseSqlite] UTF8String], &database1) == SQLITE_OK)
{
// Setup the SQL Statement and compile it for faster access
//SQLIte Statement
NSString *sqlStatement_userInfo =[NSString stringWithFormat:@"Select * from Table1 ParentID = %@",ThisParentID];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database1, [sqlStatement_userInfo UTF8String], -1, &compiledStatement, NULL) == SQLITE_OK)
{
// Loop through the results and add them to the feeds array
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
// Init the Data Dictionary
NSMutableDictionary *_dataDictionary=[[NSMutableDictionary alloc] init];
NSString *_recordName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *_recordID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *_recordParentID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
_recordBrotherID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
NSString *_recordChildID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)];
NSString *_recordType = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 5)];
NSString *_recordModified = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 6)];
ThisParentID = _recordID;
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordName] forKey:@"Name"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordID] forKey:@"ID"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordParentID] forKey:@"ParentID"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordBrotherID] forKey:@"BrotherID"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordChildID] forKey:@"ChildID"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordType] forKey:@"Type"];
[_dataDictionary setObject:[NSString stringWithFormat:@"%@",_recordModified] forKey:@"Modified"];
[array addObject:_dataDictionary];
}
// Release the compiled statement from memory
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database1);
}
else
{
NSLog(@"NOT Found");
}
} while (![_recordBrotherID isEqualToString:@"0"]);
return array;
}