Для ударов я пишу инструмент "документации схемы", который генерирует описание таблиц и отношений в базе данных. Я в настоящее время shimming его для работы с SQLite.
Мне удалось извлечь имена всех таблиц в базе данных SQLite с помощью запроса в таблице sqlite_master
. Для каждого имени таблицы я затем запускаю простой
select * from <table name>
затем используйте API-интерфейсы sqlite3_column_count()
и sqlite3_column_name()
, чтобы собрать имена столбцов, которые я далее передаю sqlite3_table_column_metadata()
, чтобы получить дополнительную информацию. Достаточно просто, правильно?
Проблема заключается в том, что он работает только для таблиц, которые не являются пустыми. То есть API sqlite_column_*()
действительны только в том случае, если sqlite_step()
возвратил SQLITE_ROW
, что не относится к пустым таблицам.
Итак, вопрос в том, как я могу узнать имена столбцов для пустых таблиц? Или, в более общем плане, есть ли лучший способ получить этот тип информации о схеме в SQLite?
Я чувствую, что должна быть другая скрытая таблица sqlite_xxx
, скрывающаяся где-то с этой информацией, но пока ее не удалось найти.