私は 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