vijay_bale Ответов: 3

Проверьте, существует ли таблица SQL или нет в C#


Я хочу проверить, существует ли таблица SQL или нет. Если не существует, я запущу create, если существует, я выберу некоторые поля из этой таблицы.

Что я уже пробовал:

Я написал это для проверки. Но какая-то ошибка приходит, что "ошибка Syantax рядом с tempoutlet"
ниже моего кода
bool exists;
            var chktb = new SqlCommand("select case when exists(select table_schema,table_name from information_schema.tables where schema_name='inventoryDB.mdf' and table_name='dbo.tempoutlet')", con);
            exists = (int)chktb.ExecuteScalar() == 1;

Так что любое решение Пожалуйста

3 Ответов

Рейтинг:
23

OriginalGriff

Попробовать это:

SELECT CASE WHEN OBJECT_ID('dbo.MyTable', 'U') IS NOT NULL THEN 1 ELSE 0 END


vijay_bale

Твое решение сработало.

Member 14682056

Выберите случай, когда OBJECT_ID('dbo.MyTable', 'U') не является нулевым, то 1 ELSE 0 END.
Что означает "U"?

OriginalGriff

https://docs.microsoft.com/en-us/sql/t-sql/functions/object-id-transact-sql?view=sql-server-ver15

Рейтинг:
2

Member 14682056

Выберите случай, когда OBJECT_ID('dbo.MyTable', 'U') не является нулевым, то 1 ELSE 0 END.
что означает "U"?


CHill60

Если вы хотите прокомментировать или задать вопрос о посте, то используйте команду "есть вопрос или комментарий?" ссылка рядом с ним.
В этом случае просмотр документации является лучшим маршрутом OBJECT_ID (Transact-SQL) - SQL Server | Microsoft Docs[^] - это означает, что мы ищем идентификатор объекта (определяемой пользователем) таблицы.

Рейтинг:
13

kmoorevs

Я знаю, что у вас уже есть рабочее решение, но просто хотел предложить другое. Альтернативным методом было бы просто выполнить вашу команду select в try/catch. Если таблица не существует, вы можете использовать блок catch для ее создания. Это позволяет избежать накладных расходов на поиск схемы каждый раз.