如何将列类型更改为自动编号

时间:2013-11-13 08:14:16

标签: c# sql vb.net winforms ms-access

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

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))

1 个答案:

答案 0 :(得分:0)

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

  

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

noAuto.png

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

cmd.CommandText =
        "ALTER TABLE myTable DROP COLUMN myID";
cmd.ExecuteNonQuery();
cmd.CommandText =
        "ALTER TABLE myTable ADD COLUMN myID IDENTITY PRIMARY KEY";
cmd.ExecuteNonQuery();