Как получить список имен столбцов с помощью Sqlite.swift?

В целях отладки я пытаюсь получить простой список имен столбцов в моей таблице SQLite. Я использую платформу SQLite.swift.

Мой вопрос более конкретен, чем Как получить список имен столбцов на sqlite3 / iPhone?, поэтому я создаю новый вопрос.

С использованием

try db.execute("PRAGMA table_info(table_name);")

применив этот ответ к документация у меня не сработала (ничего не произошло).


person Suragch    schedule 22.04.2016    source источник


Ответы (1)


Предполагая, что у вас уже настроено соединение с базой данных с именем db, чтобы получить список имен столбцов, вы можете использовать следующий код:

do {

    let tableInfo = Array(try db.prepare("PRAGMA table_info(table_name)"))
    for line in tableInfo {
        print(line[1]!, terminator: " ")
    }
    print()

} catch _ { }

где table_name заменяется буквальной строкой имени вашей таблицы.

Вы также можете добавить

print(tableInfo)

чтобы увидеть дополнительную информацию о вашей таблице.

Кредиты

Спасибо этому ответу за подсказки о том, как это сделать.

Пример функции

Протестированная подпрограмма от Джо Блоу, чтобы сэкономить немного времени на вводе:

func findColumns(_ tableName:String) {

    var asAnArray:[String] = []
    do {
        let s = try db!.prepare("PRAGMA table_info(" + tableName + ")" )
        for row in s { asAnArray.append(row[1]! as! String) }
    }
    catch { print("some woe in findColumns for \(tableName) \(error)") }

    let asAString = asAnArray.joined(separator: ",")

    print(asAnArray)
    print(asAString)
}
person Suragch    schedule 22.04.2016