使用C#创建Access数据库表时设置自增列报错求助
解决方法
问题根源
报错的核心原因是属性名称大小写不匹配,ADOX中自增属性的正确名称是AutoIncrement(首字母大写),而非你代码中的小写autoincrement;另外操作顺序也需要调整,应先设置列的自增属性,再将其设为主键。
修改后的代码
private void createDatabaseToolStripMenuItem_Click(object sender, EventArgs e) { var cat = new Catalog(); var accountTable = new Table(); cat.Create(AC.GetConnectionString()); // 创建Account表 accountTable.Name = "Account"; // 追加ID列并保存引用 var idColumn = accountTable.Columns.Append("ID", DataTypeEnum.adInteger, 4); // 设置自增属性(注意名称为AutoIncrement) idColumn.Properties["AutoIncrement"].Value = true; // 将ID设为主键 accountTable.Keys.Append("PrimaryKey", KeyTypeEnum.adKeyPrimary, "ID", null, null); // 将表追加到数据库 cat.Tables.Append(accountTable); var dBcon = cat.ActiveConnection as OleDbConnection; if (dBcon != null) dBcon.Close(); MessageBox.Show("Database Created Successfully"); }
关键说明
- 属性名称正确性:ADOX的
Column.Properties集合对名称大小写敏感,必须使用AutoIncrement才能找到对应属性; - 操作顺序优化:先设置列的自增属性,再将其配置为主键,符合Access表结构的创建逻辑;
- 变量复用:将追加的ID列赋值给变量
idColumn,后续直接操作该变量,避免重复通过索引查找列,提升代码可读性与稳定性。
内容的提问来源于stack exchange,提问作者Richard A Knox
相关产品推荐
相关产品推荐

