我尝试将列类型更改为自动编号,我通过此查询将一些列更改为文本:
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))
答案 0 :(得分:0)
如果Access数据库中的表具有现有记录,则无法将现有字段转换为自动编号,即使该字段为空:
在表格中输入数据后,即使您尚未向该字段添加数据,也无法将任何字段的数据类型更改为自动编号。
因此,您需要做的是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();