私は 1 つのプロジェクトを持っており、その中で 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;
}