0

私は Mac OS プログラミングが初めてで、Mac OS プロジェクトに SQLite データベースを統合するという問題に直面しています。

+ (void) getInitialDataToDisplay:(NSString *)dbPath {

    AppDelegate* appDelegate = (AppDelegate *)[[NSApplication sharedApplication] delegate];


    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

        const char *sql = "select * from MyTable";
        sqlite3_stmt *selectstmt;
        if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {

            NSLog(@"sqlite3_step(selectstmt)=%d",sqlite3_step(selectstmt));
            NSLog(@"SQLITE_ROW= %d",SQLITE_ROW);

            while(sqlite3_step(selectstmt) == SQLITE_ROW) {

                NSInteger PrimaryKey = sqlite3_column_int(selectstmt, 0);
                DatabaseInfo *databaseObj = [[DatabaseInfo alloc] initWithPrimaryKey:PrimaryKey];
                databaseObj.item1 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
                databaseObj.item2 = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)];


                [appDelegate.mutablearray_Database addObject:databaseObj];

                [databaseObj release];
            }
        }
    }
    else
        sqlite3_close(database);

}

上記のメソッドでは、コントローラーは while ループに入ることはありませんでした。そのため、データベースからデータを取得できません。

誰でも私を助けることができますか?

Mac OS プログラミングで SQLite データベースを実装するためのサンプル コードを教えてください。

4

1 に答える 1

1

まず第一に、CoreData (apple 独自の sqlite の実装であり、非常に強力で効率的ですが、クラスに頭を悩ませる前にいくつかのドキュメントを読む必要があります) を利用するのがおそらく最善であることを指摘したいと思います。 ) またはFMDB。これは、SQLite 用の十分にテストされた Objective-C ラッパーであり、github の FMDB です。

次に、テーブルで使用できる行数はいくつですか? その NSLog も sqlite3_step() を呼び出しているため、実際に持っている唯一の行をステップオーバーするだけかもしれません..残りの実装は、私のいくつかの古いプロジェクトで行っていることとほぼ同じです。たとえば:

sqlite3_stmt *statement = nil;
if( sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, NULL) == SQLITE_OK )
{
     while( sqlite3_step(statement) == SQLITE_ROW )
     {
          // get column data..
     }
}
sqlite3_finalize(statement);
于 2012-12-07T13:29:18.953 に答える