1

私は Xcode 4 で sqlite データベースから情報を取得しようとしている初心者の iPhone 開発者です。.h および .m ファイルと同じディレクトリにデータベース (DB_Info.sqlite という名前) があり、データベースを Xcode の左側のバーのフォルダー セクションに移動します。私のコードを簡単に見て、私の間違いがどこにあるか教えてください。

#import "MyDatabase.h"
#import "FMDatabase.h"

    enter code here

@implementation MyDatabase


-(NSMutableArray *) OpenMyDatabase: (NSString *)query:(NSString *)column
{
    //store the database name here
    self.databaseName=@"App_Database.sqlite";

    //get the reference of the database to be stored in device or emulator
    FMDatabase *database=[self openDatabase: self.databaseName];

    //open the database
    [database open];

    //fetch a collumn from database and store it in array
   // NSArray *nsarr= [self storeDatabaseColumnInArray: database: @"select id from kas":@"id"];
    NSMutableArray *nsarr= [self storeDatabaseColumnInArray: database: query:column];

    //close the database
    [database close];
    return nsarr;

}


- (FMDatabase *)openDatabase: (NSString *)databasename
{

    NSFileManager *fm = [NSFileManager defaultManager];
    NSString *documents_dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *db_path = [documents_dir stringByAppendingPathComponent: databasename ];
    NSString *template_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: databasename];

    if (![fm fileExistsAtPath:db_path])
        [fm copyItemAtPath:template_path toPath:db_path error:nil];
    FMDatabase *db = [FMDatabase databaseWithPath:db_path];
    if (![db open])
        NSLog(@"Failed to open database!");
    return db;
}
-(void) createAndCheckDatabase
{
    BOOL success;

    NSFileManager *fileManager=[NSFileManager defaultManager];
    success=[fileManager fileExistsAtPath:_databasePath];
    NSString *databasePathFromApp=[[[NSBundle mainBundle] resourcePath]
                                   stringByAppendingPathComponent:self.databaseName ];
    [fileManager copyItemAtPath:databasePathFromApp toPath:_databasePath error:nil];

}

-(NSMutableArray *) storeDatabaseColumnInArray:(FMDatabase *)database: (NSString *)sqlStatement :(NSString *)columnName
{

    NSMutableArray *mutablearray = [NSMutableArray array];
    FMResultSet *results = [database executeQuery: sqlStatement];

    while([results next]) {

        NSString *rowValue = [results stringForColumn:columnName];

        [mutablearray addObject:results];
         NSLog(@"row value %@",rowValue);
    }

    //convert the nsmutable array to nsarray
 //   NSArray *temparr=[NSArray arrayWithArray:mutablearray];
    return mutablearray;

}

@end

データベースのデータは表示されません。

データベースにアクセスできません。

エラーは

database    FMDatabase *    0x0757ed50
nsarr         NSMutableArray *  0x0718df40
4

0 に答える 0