AUTOINCREMENT не работает на OleDbCommand - PullRequest
1 голос
/ 25 января 2011

Я делаю файл базы данных MS Access, используя OleDb. Вот фрагмент:

OleDbCommand command = oleDbConnection.CreateCommand();

command.CommandText =
    "CREATE TABLE MyTable (" +
    "[Count] LONG NOT NULL PRIMARY KEY AUTOINCREMENT, " +
    "[TimeAndDateTested] TIMESTAMP NOT NULL, " +
    "[SerialNumber] VARCHAR(14) NOT NULL, " +
    "[TestResult] BIT NOT NULL)";                    

command.ExecuteNonQuery();

Вы знаете, что не так? Спасибо.

Ответы [ 3 ]

4 голосов
/ 25 января 2011

В Access 2003 этот оператор создаст структуру таблицы, которая, я думаю, вам нужна. Обратите внимание, что я изменил имя первого поля на Kount, потому что Count является зарезервированным словом в Access. Вы можете заключить имя в квадратные скобки, чтобы избежать двусмысленности, но я предпочитаю просто избегать использования зарезервированных слов в качестве имен объектов. TIMESTAMP распознается как синоним DATETIME. VARCHAR является синонимом TEXT. BIT получит вам тип поля, который Access вызывает Да / Нет.

CREATE TABLE MyTable2 (
Kount COUNTER CONSTRAINT pkey PRIMARY KEY,
TimeAndDateTested TIMESTAMP NOT NULL,
SerialNumber VARCHAR(14) NOT NULL,
TestResult BIT NOT NULL);

Я назначил ограничение первичного ключа Kount и назвал ограничение "pkey". Not Null и unique подразумеваются ограничением первичного ключа, поэтому вам не нужно указывать их отдельно.

3 голосов
/ 25 января 2011

Я изменяю:

"[Count] LONG NOT NULL PRIMARY KEY AUTOINCREMENT, " +

с:

"[Count] IDENTITY NOT NULL PRIMARY KEY, " +

и все заработало.

2 голосов
/ 25 января 2011

При использовании DDL против MS Access, вы хотите использовать COUNTER, чтобы указать поле с автоинкрементным целым числом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...