столбцы информации на sqlite - PullRequest
7 голосов
/ 18 апреля 2009

Я хотел бы сделать запрос следующим образом:

SELECT table_name, column_name, data_type, is_nullable, ... 
FROM information_schema.columns

в базе данных sqlite.

Я проверил

PRAGMA table_info(table_name); 

но не соответствует моим потребностям, просто проверьте поля для one таблицы.

Я проверил

select * from sqlite_master where type = 'table';

Но при этом получаются только имена таблиц и запрос на создание.

Есть ли способ "присоединить" их к методам? или любое другое предложение или идеи? ТХ

Ответы [ 3 ]

4 голосов
/ 24 апреля 2009

Я знаю, что вы не хотите этого слышать, но вы не сможете выполнить соединение из SQL с SQLite. Прагма table_info не привязана к стандартному запросу, а скорее к программе виртуальной машины, жестко запрограммированной в исходные тексты SQLite. Эта программа поддерживает только одну таблицу. Полная остановка. :)

Если вам нужно только тестировать, не должно быть слишком сложно написать скрипт, который будет делать то, что вы хотите. В противном случае вам придется записать это в ваше приложение. В любом случае, вы выберете имя таблицы из sqlite_master, используя ваш запрос sqlite_master, сделаете из него запрос SQL, используя sqlite3_mprintf("pragma table_info(%s);",name), и подготовите / выполните его.

3 голосов
/ 24 октября 2011

К вашему сведению, если вы используете .Net, вы можете использовать метод DbConnection.GetSchema для получения информации, которая обычно находится в INFORMATION_SCHEMA. Если у вас есть уровень абстракции, вы можете иметь один и тот же код для всех типов баз данных (учтите, что MySQL, похоже, включает первые 2 аргумента массива ограничений).

3 голосов
/ 18 апреля 2009

В API SQLite C гораздо больше поддержки для такого рода вещей; см. эту страницу например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...