Member 13356973 Ответов: 1

Как создать таблицу, если она не существует?


Я работаю над проектом c#, и теперь мне нужно создать таблицу в sql, но мне просто нужно создать ее, если она не существует.

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

Я сделал поиск в google и нашел это, но по какой-то причине не работает, это игнорирует
if
и просто создает таблицу, и если таблица уже существует, она пропускает весь мой код, но я не получаю никакой ошибки
conn.Open();
SqlCommand command = new SqlCommand("IF OBJECT_ID('UXMenu', 'U') IS NULL CREATE TABLE UXMenu(TransDocument char(10), TransSerial char(8), TransDocNumber float, PartyName char(75), PartyLocalityID char(5), TotalAmount char (25), ShipToPostalCode char(50), Estado int);", conn);
command.ExecuteNonQuery();
MessageBox.Show("tabela criada");
conn.Close();

1 Ответов

Рейтинг:
8

OriginalGriff

Хм. Вы заметили, что ваша команда проверяет наличие одной таблицы, а если она не существует, создает таблицу с совершенно другим именем?

IF OBJECT_ID('UXFaturas', 'U') IS NULL CREATE TABLE UXMenu(...);


И если он исправлен, то если он находит таблицу или нет, то нет ничего, чтобы ошибиться. Вы можете добавить ошибку, если она действительно существует:
IF OBJECT_ID('UXMenu', 'U') IS NULL 
   CREATE TABLE UXMenu(TransDocument char(10), TransSerial char(8), TransDocNumber float, PartyName char(75), PartyLocalityID char(5), TotalAmount char (25), ShipToPostalCode char(50), Estado int);
ELSE 
   THROW 50001, 'Table Exists', 1;


Member 13356973

Я изменил имя таблицы и забыл его изменить, спасибо за помощь

Member 13356973

Он все еще пропускает мой код, если таблица существует

OriginalGriff

Как вы проверили?

Member 13356973

Я запускаю программу и добавляю messagebox, когда она идет за таблицей create, но я ее исправил, спасибо за помощь

OriginalGriff

Не используйте MessageBox, чтобы следить за тем, что делает ваш код - используйте отладчик, он дает вам гораздо больше помощи и контроля.

Member 13356973

хорошо, сэр, спасибо за предложение, я буду иметь это в виду для своих будущих проектов