Как получить определенную информацию о столбцах в SQL Server CE

Я делаю приложение в VB.NET для создания и управления базами данных SQL Server CE, и мне нужно получить некоторую информацию о столбцах, чтобы поместить их в DataGridView (каждая строка dgv ссылается на столбец таблицы база данных).

Я сделал неполный запрос с некоторыми материалами, найденными в Интернете, чтобы получить:

  • Название столбца;
  • Тип данных;
  • Если столбец является первичным ключом;
  • Значение по умолчанию для столбца;
  • Если столбец обнуляем.

Вот запрос:

SELECT COL.[COLUMN_NAME] AS COLNAME,
       COL.[DATA_TYPE],
       CASE WHEN IND.[COLUMN_NAME] IS NOT NULL THEN 1 ELSE 0 END AS PK,
       COL.[COLUMN_DEFAULT],
       CASE WHEN COL.[IS_NULLABLE] = 'YES' THEN 1 ELSE 0 END AS ALLOW_NULL
FROM INFORMATION_SCHEMA.COLUMNS AS COL LEFT JOIN INFORMATION_SCHEMA.INDEXES AS IND ON COL.COLUMN_NAME=IND.COLUMN_NAME AND COL.TABLE_NAME=IND.TABLE_NAME
WHERE COL.TABLE_NAME='MyTable'

Это работает довольно хорошо, но мне также нужна следующая информация:

  • Если столбец имеет идентичность; (решено, спасибо ErikEJ)
  • Если это позволяет дубликаты. (частично решено)

Как я могу обновить запрос, чтобы получить эту информацию в дополнение к тому, что он мне уже дает?

Спасибо и извините за мой ужасный английский (я итальянский, и мне довольно трудно писать на другом языке).

1 ответ

Решение

Вы можете проверить, не является ли столбец autoinc_increment НЕ НЕДЕЙСТВИТЕЛЬНЫМ, тогда это столбец IDENTITY. Но вы также можете просто использовать мою библиотеку SqlCeScripting, чтобы получить всю эту информацию с помощью кода, вместо того, чтобы заново изобретать эти запросы самостоятельно - http://exportsqlce.codeplex.com/

Другие вопросы по тегам