C#-Alter table tname добавить столбец cname Long Integer NOT NULL-выдает исключение

Я создаю таблицы и столбцы динамически.

Сначала создайте таблицы, а затем добавьте в них столбцы с помощью alter table.

Но всякий раз, когда

ALTER TABLE TNAME 
ADD COLUMN CNAME LONG INTEGER NOT NULL

выполняется, он показывает ошибку в операторе изменения таблицы.

И когда есть DECIMAL(28,0) NOT NULL, столбец успешно добавлен.

База данных MS-Access и использует C#

что не так с long int


person vishal    schedule 07.03.2012    source источник
comment
Тег доступа не относится к базе данных ms-access.   -  person Steve    schedule 07.03.2012


Ответы (1)


В языке JET SQL нет типа базы данных LONG INTEGER. Вы просто указываете LONG или INTEGER.

Я попробовал ваш оператор sql с помощью Access Query Builder, и ему не нравится этот синтаксис. Однако вы правы, если я удалю окончание NOT NULL, он примет оператор, хотя здесь кажется недопустимым синтаксисом.

person Steve    schedule 07.03.2012
comment
если я не укажу не нуль. Тогда он работает нормально. Он добавляет столбец с числовым типом данных и типом поля LONG INTEGER, но когда нет нуля, он выдает ошибку - person vishal; 07.03.2012
comment
ДА ТАБЛИЦА ПУСТА. Я ТОЛЬКО СОЗДАЛ ПУСТОЙ ТАБЛИЦ И ДОБАВИЛ К НЕЙ СТОЛБЦЫ - person vishal; 07.03.2012
comment
Не пропускать NOT NULL, пропускать INTEGER: ALTER TABLE TNAME ADD COLUMN CNAME LONG NOT NULL - person Fionnuala; 07.03.2012
comment
@Remou да, это правильный путь. Однако, как указал OP, и я могу это подтвердить, если я удалю NOT NULL, строка с LONG INTEGER будет принята Jet Engine. Мне это странно. - person Steve; 07.03.2012
comment
ДА, целое число пропущено, и оно работает. Большое спасибо вам обоим. - person vishal; 07.03.2012
comment
есть еще одна вещь при добавлении данных к типу да/нет, он показывает несоответствие типа данных. Этот запрос работает в дизайне запроса в доступе ms, но в С# он дает ошибку - person vishal; 07.03.2012
comment
Привет, Стив. Это второй раз за последнюю неделю, когда я сталкиваюсь с чем-то подобным, и я начинаю подозревать, что Access (Jet/ACE) отбросит последнее слово, если оно не имеет значения, поэтому добавление NOT NULL означает, что INTEGER не является длиннее последнее слово, и оно перестает работать. - person Fionnuala; 07.03.2012
comment
Например, это работает alter table table2 add column cola integer cat, но у меня не получается кот. Или единорог alter table table2 add column colb integer unicorn - person Fionnuala; 07.03.2012