601 Stimmen

Wie erhält man eine Liste von Spaltennamen in einer Sqlite3-Datenbank?

Ich möchte meine iPhone-App auf eine neue Datenbankversion migrieren. Da ich einige Versionen nicht gespeichert habe, muss ich prüfen, ob bestimmte Spaltennamen existieren.

Diese Stackoverflow-Eintrag schlägt vor, die Auswahl zu treffen

SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'

und analysieren das Ergebnis.

Ist das der übliche Weg? Gibt es Alternativen?

9voto

Raamalakshmanan Punkte 127

Sie können die Like-Anweisung verwenden, wenn Sie nach einer bestimmten Spalte suchen

ex:

SELECT * FROM sqlite_master where sql like('%LAST%')

7voto

Devolus Punkte 20928

Um die Spalteninformationen zu erhalten, können Sie das folgende Snippet verwenden:

String sql = "select * from "+oTablename+" LIMIT 0";
Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
ResultSetMetaData mrs = rs.getMetaData();
for(int i = 1; i <= mrs.getColumnCount(); i++)
{
    Object row[] = new Object[3];
    row[0] = mrs.getColumnLabel(i);
    row[1] = mrs.getColumnTypeName(i);
    row[2] = mrs.getPrecision(i);
}

6voto

Kevin Hu Punkte 61

.schema in der Sqlite-Konsole, wenn Sie sich innerhalb der Tabelle befinden sieht es bei mir etwa so aus ...

sqlite>.schema
CREATE TABLE players(
id integer primary key,
Name varchar(255),
Number INT,
Team varchar(255)

6voto

Dattatray Deokar Punkte 1561
//JUST little bit modified the answer of giuseppe  which returns array of table columns
+(NSMutableArray*)tableInfo:(NSString *)table{

    sqlite3_stmt *sqlStatement;

    NSMutableArray *result = [NSMutableArray array];

    const char *sql = [[NSString stringWithFormat:@"PRAGMA table_info('%@')",table] UTF8String];

    if(sqlite3_prepare(md.database, sql, -1, &sqlStatement, NULL) != SQLITE_OK)

    {
        NSLog(@"Problem with prepare statement tableInfo %@",
                [NSString stringWithUTF8String:(const char *)sqlite3_errmsg(md.database)]);

    }

    while (sqlite3_step(sqlStatement)==SQLITE_ROW)
    {
        [result addObject:
          [NSString stringWithUTF8String:(char*)sqlite3_column_text(sqlStatement, 1)]];
    }

    return result;
}

4voto

Om Shankar Punkte 255
function getDetails(){
var data = [];
dBase.executeSql("PRAGMA table_info('table_name') ", [], function(rsp){
    if(rsp.rows.length > 0){
        for(var i=0; i<rsp.rows.length; i++){
            var o = {
                name: rsp.rows.item(i).name,
                type: rsp.rows.item(i).type
            } 
            data.push(o);
        }
    }
    alert(rsp.rows.item(0).name);

},function(error){
    alert(JSON.stringify(error));
});             
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X