FMDBでテーブル内の情報を出力するソースコード
前提として
- FMDBが導入されている(導入方法はこちら)。
- test.dbというファイルが iOS Simulator の Documents ディレクトリにある(iOS Simulatorののパスについてはこちら)。このディレクトリに直接データファイルを置くと、シミュレーターのバージョンごとにデータファイルを置く必要があるので面倒。解決策として、Supporting Files 内にデータファイルを置いておいて、アプリ起動時に Supporting Files 内にデータがない場合に Documents ディレクトリにコピーする方法がある。詳しくは、こちら
- title というカラムにデータが既に入っている
ソースコード
—————————————————————-
//インポート(ヘッダーファイル)
#import “FMDatabase.h”
—————————————————————-
—————————————————————-
– (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// パスとDBファイル名を指定
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
//test.db はファイル名
NSString *db_path = [dir stringByAppendingPathComponent:@”test.db”];
FMDatabase *db = [FMDatabase databaseWithPath:db_path];
//データを抽出
[db open];
//testdb はテーブル名
FMResultSet *rs = [db executeQuery:@”select id,title from testdb”];
while ([rs next]){
// 出力
NSString *text1 = [rs stringForColumn:@”title”];
//UIlabelクラスのインスタンスを生成。
//alloc でインスタンスの生成(allocationはメモリの割り当ての意)。init で初期化。
UILabel *label = [[UILabel alloc] init];
//labelオブジェクトにテキストを設定
label.text = text1;
//コンテンツの大きさの合わせてUIViewの大きさを変える。UIViewはUIlabelの親クラス。
[label sizeToFit];
//行数の指定。0は、表示可能な最大行数。(インスペクターでの設定も可だがソースが優先される)
label.numberOfLines = 0;
label.center = self.view.center;
[self.view addSubview:label];
// 出力 ここまで
}
[rs close];
}
—————————————————————-
結果をラベルに表示せずに、配列に入れる場合はスクリプト後半を以下のように変更する
—————————————————————-
//データを抽出
[db open];
FMResultSet *rs = [db executeQuery:@”select id,title from testdb”];
while ([rs next]){
// 出力
NSString *text1 = [rs stringForColumn:@”title”];
//配列を追加。配列の型は必ず NSMutableArray であること。NSMutableArray は不可。
[testArray addObject:text1];
//UIlabelクラスのインスタンスを生成。
//alloc でインスタンスの生成(allocationはメモリの割り当ての意)。init で初期化。
// UILabel *label = [[UILabel alloc] init];
//labelオブジェクトにテキストを設定
//label.text = text1;
//コンテンツの大きさの合わせてUIViewの大きさを変える。UIViewはUIlabelの親クラス。
//[label sizeToFit];
//label.center = self.view.center;
//[self.view addSubview:label];
// 出力 ここまで
}
[rs close];
—————————————————————-