0

我试图将列类型更改为自动编号,我通过此查询将某些列更改为文本:

ALTER TABLE table ALTER COLUMN column TEXT(500)

它正在工作,但我无法通过查询将列类型更改为自动编号,
所以我尝试编写代码来更改列类型:

Dim statement As String = String.Format("SELECT * FROM [" & TableName & "]")
Dim command As OleDbCommand = New OleDbCommand(statement, con)
Dim adapter As OleDbDataAdapter = New OleDbDataAdapter(command)
Dim schema As DataTable = New DataTable
adapter.FillSchema(schema, SchemaType.Source)
Dim c As DataColumn = schema.Columns(schema.Columns.Count - 1) //Last Column
adapter.Dispose()
command.Dispose()
schema.Dispose()

所以列是C(DataColumn),我不知道下一步该做什么......
(我怎样才能将此列类型更改为自动编号(C#/VB.net))

4

1 回答 1

0

如果 Access 数据库中的表具有现有记录,则无法将现有字段转换为自动编号,即使该字段为空:

在表格中输入数据后,您无法将任何字段的数据类型更改为自动编号,即使您尚未向该字段添加数据。

noAuto.png

因此,您需要做的是 DROP 现有(空)列,然后添加一个具有相同名称的新自动编号列

cmd.CommandText =
        "ALTER TABLE myTable DROP COLUMN myID";
cmd.ExecuteNonQuery();
cmd.CommandText =
        "ALTER TABLE myTable ADD COLUMN myID IDENTITY PRIMARY KEY";
cmd.ExecuteNonQuery();
于 2013-11-13T09:12:52.700 回答