Проблема с тривиальным INSERT
От: valker  
Дата: 09.01.06 13:23
Оценка:
Здравствуйте!

В Microsoft Access создал таблицу:

Имя поля: ItemID
Тип данных: Счётчик

Пытаюсь при помощи ADO.NET создать записи в этой таблице.

Dim dbCmd As DbCommand = connection_.CreateCommand()
dbCmd.CommandText = "INSERT INTO Item"
dbCmd.ExecuteNonQuery()


Получаю исключение — "Syntax error in INSERT INTO statement."

Пробовал добавлять имя поля, слово "VALUES" и расставлять скобочки — не помогает.

Подскажите пожалуйта верный путь?

Заранее спасибо.
Re: Проблема с тривиальным INSERT
От: Пацак Россия  
Дата: 09.01.06 13:37
Оценка:
Здравствуйте, valker, Вы писали:

RTFM синтаксис оператора INSERT:

INSERT INTO MyTable (Item) Values (value)


INSERT INTO MyTable (Field1, Field2.... FieldN) Values (value1, value2 ... valueN)
Ку...
Re[2]: Проблема с тривиальным INSERT
От: valker  
Дата: 09.01.06 13:46
Оценка:
Здравствуйте, Пацак,

Спасибо за ответ.

Но тема не закрыта. Вопрос был в том, что если у таблицы есть только одно поле — у которого автоинкрементирующийся тип, то что нужно писать в скобочках "VALUES (???)"

Заранее спасибо.
Re[3]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 09.01.06 14:05
Оценка:
Здравствуйте, valker, Вы писали:

V>Здравствуйте, Пацак,


V>Спасибо за ответ.


V>Но тема не закрыта. Вопрос был в том, что если у таблицы есть только одно поле — у которого автоинкрементирующийся тип, то что нужно писать в скобочках "VALUES (???)"


V>Заранее спасибо.



По меньшей мере, оригинально.
А, если не секрет, зачем такая таблица?
Crescite, nos qui vivimus, multiplicamini
Re[4]: Проблема с тривиальным INSERT
От: valker  
Дата: 09.01.06 14:12
Оценка:
Здравствуйте, OLEGus1, Вы писали:

OLE>По меньшей мере, оригинально.

OLE>А, если не секрет, зачем такая таблица?

Своего рода корень иерархии в ОО программировании. Общее свойство у всех объектов — это уникальность — для этого и нужна указанная таблица. Отклонения в свойсвах фиксируются в связанных таблицах, содержащие дополнительные и опциональные свойства.

Но всё-таки хотелось бы услышать ответ на поставленный вопрос:
Как вставить в таблицу новую запись, если единственное поле таблицы — автоинкрементирующийся счётчик?

Заранее спасибо.
Re: Проблема с тривиальным INSERT
От: Short-Legger Россия  
Дата: 09.01.06 14:12
Оценка:
Здравствуйте, valker, Вы писали:

1.
Single-record append query:

INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])


2.

If you append records to a table with an AutoNumber field and you want to renumber the appended records, do not include the AutoNumber field in your query. Do include the AutoNumber field in the query if you want to retain the original values from the field.

Re[5]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 09.01.06 14:52
Оценка: -2
Здравствуйте, valker, Вы писали:


INSERT INTO qqq ( qqq )
SELECT max(qqq)+1
FROM qqq;

Но зачем ему тогда быть счетчиком?

У меня большое подозрение на неоптимальное проектирование структуры БД.
Crescite, nos qui vivimus, multiplicamini
Re[5]: Проблема с тривиальным INSERT
От: gavrilenko_s  
Дата: 09.01.06 14:57
Оценка:
insert [tbl] values (default)
Re[3]: Проблема с тривиальным INSERT
От: Пацак Россия  
Дата: 09.01.06 15:01
Оценка:
Здравствуйте, valker, Вы писали:

V>Но тема не закрыта. Вопрос был в том, что если у таблицы есть только одно поле — у которого автоинкрементирующийся тип, то что нужно писать в скобочках "VALUES (???)"


Затем, что синтаксис такой. Можно (и то не уверен, что в Access прокатит) не писать список полей, а вот список значений — обязателен.
Ку...
Re[6]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 09.01.06 15:05
Оценка:
Здравствуйте, gavrilenko_s, Вы писали:

_>
_>insert [tbl] values (default)
_>

И что в итоге? Спросит что такое default? (Access 2002)
Crescite, nos qui vivimus, multiplicamini
Re[5]: Проблема с тривиальным INSERT
От: Igor Trofimov  
Дата: 09.01.06 15:05
Оценка:
V>Своего рода корень иерархии в ОО программировании. Общее свойство у всех объектов — это уникальность — для этого и нужна указанная таблица. Отклонения в свойсвах фиксируются в связанных таблицах, содержащие дополнительные и опциональные свойства.

Стандартный INSERT того, что ты спрашиваешь, не умеет.

Оставляя в стороне вопрос целесообразности такой структуры, хочется заметить, что общих свойство должно быть существенно больше — реальный тип объекта, какое-нибудь время создания, код пользователя-создателя, возможно версия записи (для оптимистичных блокировок).

Оформи создание такой записи в хранимую процедуру, идентификатор получай в ней же.
Re[6]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 09.01.06 15:08
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Оставляя в стороне вопрос целесообразности такой структуры, хочется заметить, что общих свойство должно быть существенно больше — реальный тип объекта, какое-нибудь время создания, код пользователя-создателя, возможно версия записи (для оптимистичных блокировок).

Оставляя ли?

iT>Оформи создание такой записи в хранимую процедуру, идентификатор получай в ней же.

На Аксесе?
Crescite, nos qui vivimus, multiplicamini
Re[7]: Проблема с тривиальным INSERT
От: Igor Trofimov  
Дата: 09.01.06 18:50
Оценка:
OLE>Оставляя ли?

Оставляя.

iT>>Оформи создание такой записи в хранимую процедуру, идентификатор получай в ней же.

OLE>На Аксесе?

oops
Re[8]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 10.01.06 07:42
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

iT>Оставляя.


Ты же предлагаешь добавить поле (это и есть изменение структуры). Тогда инсерт и дурак сделает. А вот в текущей ситуации что человеку делать?
Crescite, nos qui vivimus, multiplicamini
Re[9]: Проблема с тривиальным INSERT
От: Horror_Infinity Россия  
Дата: 10.01.06 07:59
Оценка:
Здравствуйте, OLEGus1, Вы писали:

OLE>Ты же предлагаешь добавить поле (это и есть изменение структуры). Тогда инсерт и дурак сделает. А вот в текущей ситуации что человеку делать?


Например, не использовать Access. Взять что-то более адекватное, умеющее работать с процедурами/триггерами. Тогда и вопрос об INSERT-ах отпадет сам собой. Если надо что-то компактное и переносимое, то Firebird Embedded.
... << RSDN@Home 1.2.0 alpha rev. 624>>
Re[10]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 10.01.06 08:20
Оценка:
Здравствуйте, Horror_Infinity, Вы писали:

H_I>Например, не использовать Access. Взять что-то более адекватное, умеющее работать с процедурами/триггерами. Тогда и вопрос об INSERT-ах отпадет сам собой. Если надо что-то компактное и переносимое, то Firebird Embedded.


Вопрос был поставлен именно про аксес. При чем тут фаербед?
Crescite, nos qui vivimus, multiplicamini
Re[11]: Проблема с тривиальным INSERT
От: Пацак Россия  
Дата: 10.01.06 08:28
Оценка:
Здравствуйте, OLEGus1, Вы писали:

OLE>Вопрос был поставлен именно про аксес. При чем тут фаербед?


Олег, а ты сам-то ответ знаешь или просто докапываешься? Я вот тут покумекал слегка и сдается мне при соблюдении всех исходных условий (INSERT, одно поле, автоинкремент, MS аксекс) задача решения не имеет. Или все-таки имеет?
Ку...
Re[12]: Проблема с тривиальным INSERT
От: OLEGus1 Россия  
Дата: 10.01.06 08:35
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Олег, а ты сам-то ответ знаешь или просто докапываешься? Я вот тут покумекал слегка и сдается мне при соблюдении всех исходных условий (INSERT, одно поле, автоинкремент, MS аксекс) задача решения не имеет. Или все-таки имеет?


В том то и дело, что не имеет.
А прикопался я из-за минуса. Непонятно за что.
Crescite, nos qui vivimus, multiplicamini
Re[11]: Проблема с тривиальным INSERT
От: Horror_Infinity Россия  
Дата: 10.01.06 09:29
Оценка: +1
Здравствуйте, OLEGus1, Вы писали:

OLE>Вопрос был поставлен именно про аксес. При чем тут фаербед?


Да я как бы в курсе. Я просто предложил несколько иное решение, поскольку в рамках озвученного задача решения не имеет. Ну не понимает акцесс выражения DEFAULT VALUE, хотя и должен бы по соображениям совместимости с сиквелом.
... << RSDN@Home 1.2.0 alpha rev. 624>>
Re[12]: Проблема с тривиальным INSERT
От: wildwind Россия  
Дата: 10.01.06 09:31
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Я вот тут покумекал слегка и сдается мне при соблюдении всех исходных условий (INSERT, одно поле, автоинкремент, MS аксекс) задача решения не имеет. Или все-таки имеет?


Интересно еще, что и в самом Аксессе Вставить такую запись не удается.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.