AUTOINCREMENT不适用于OleDbCommand

时间:2011-01-25 02:50:41

标签: c# .net database ms-access

我正在使用OleDb进行MS Access数据库文件。这是片段:

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 个答案:

答案 0 :(得分:4)

在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”。主键约束隐含了Null和unique,因此您无需单独指定它们。

答案 1 :(得分:3)

我改变了:

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

使用:

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

并且有效。

答案 2 :(得分:2)

对MS Access使用DDL时,您希望使用COUNTER指定自动递增整数字段。