3

Objective-cでsqlite3テーブル名を取得するにはどうすればよいですか?たとえば、複数のテーブルを作成した場合.table、ターミナルのようにそれらの名前を取得(表示)したいと思います。ありがとうございます。

4

4 に答える 4

3

以下のコードを使用してください:

-(NSMutableArray *)fetchTableNames
{   
    sqlite3_stmt* statement;
    NSString *query = @"SELECT name FROM sqlite_master WHERE type=\'table\'";
    int retVal = sqlite3_prepare_v2(YOUR_DB_OBJ, 
                                    [query UTF8String],
                                    -1,
                                    &statement,
                                    NULL);

    NSMutableArray *selectedRecords = [NSMutableArray array];
    if ( retVal == SQLITE_OK )
    {
        while(sqlite3_step(statement) == SQLITE_ROW )
        {
            NSString *value = [NSString stringWithCString:(const char *)sqlite3_column_text(statement, 0)
                                                 encoding:NSUTF8StringEncoding];
            [selectedRecords addObject:value];
        }       
    }   

    sqlite3_clear_bindings(statement);
    sqlite3_finalize(statement);

    return selectedRecords;
}
于 2013-03-27T11:26:54.590 に答える
2
SELECT name FROM sqlite_master WHERE type='table'
于 2013-03-27T10:49:08.120 に答える
1
SELECT * FROM sqlite_master where type='table'

これを試して。

于 2014-03-20T12:39:02.780 に答える
0
- (NSArray *)listOfColumnNamesForTable:(NSString *)tableName WithDBFilePath:(NSString*)databasePath {

sqlite3 *sqlite3Database;
NSMutableArray *columnNames = [NSMutableArray array];
int openDatabaseResult = sqlite3_open([databasePath UTF8String], &sqlite3Database);
if(openDatabaseResult == SQLITE_OK) {
    sqlite3_stmt *compiledStatement;
    NSString *query = [NSString stringWithFormat:@"pragma table_info ('%@')",tableName];
    int prepareStatementResult = sqlite3_prepare_v2(sqlite3Database, [query UTF8String], -1, &compiledStatement, NULL);
    if(prepareStatementResult == SQLITE_OK) {
        sqlite3_stmt* statement;
        int retVal = sqlite3_prepare_v2(sqlite3Database,
                                        [query UTF8String],
                                        -1,
                                        &statement,
                                        NULL);

        if ( retVal == SQLITE_OK )
        {
            while(sqlite3_step(statement) == SQLITE_ROW )
            {
                NSString *value = [NSString stringWithCString:(const char *)sqlite3_column_text(statement, 1)
                                                     encoding:NSUTF8StringEncoding];
                [columnNames addObject:value];
            }
        }
        sqlite3_clear_bindings(statement);
        sqlite3_finalize(statement);
        sqlite3_close(sqlite3Database);
        return [columnNames mutableCopy];
    }



}
sqlite3_close(sqlite3Database);
return nil;

}

于 2015-08-10T08:36:34.263 に答える