【发布时间】:2012-02-07 22:09:29
【问题描述】:
我需要通过代码修改 MS Acess 数据库 (.mdb) 的 schema。
由于 Jet Engine DDL 语句(ALTER TABLE 等)的文档记录很差,我更喜欢使用某种对象库,如 DAO (myDatabase.TableDefs("myTable").Fields.Append(myNewField)) 或 ADOX (myCatalog.Tables("myTable").Columns.Append(myNewField)) 或 SMO(其中仅适用于 SQL Server,语法类似 - 你懂的)。
是否有类似 ADOX for ADO.NET 的东西,还是我坚持使用 DDL 语句或引用旧的 DAO/ADOX 库?
【问题讨论】:
-
poorly documented 是什么意思?您不清楚哪个陈述?无论如何,您可以在 .NET 中使用 ADOX。例如,请参阅How to create an Access database by using ADOX and Visual C# .NET。
-
感谢您的链接,看起来文档在最新版本的 Access 中得到了极大的改进。还有一个例子: ALTER TABLE 页面不包含有效数据类型的列表;完全不清楚(从文档中),例如,我将如何创建一个精度为 X 和比例为 Y 的新小数。同时,我发现了这样一个数据类型关键字表(它在用户 cmets 部分中链接CREATE TABLE documentation),但这与 SQL Server BOL 等的质量相差甚远。
-
不知道 .NET 的 ADOX“更新”。 Here 是一个使用 C# 创建数据库的 ADOX 示例。而且,是的,Access 的 DDL 文档很少,但有一些书籍可以提供帮助。
-
哦,另外一个为什么通过 DDL 管理 Access 模式不是一个好主意的原因:The schema rowsets are broken. 我刚刚学会了 OLE DB 模式表和 ODBC 模式表都不会返回正确的 IS_NULLABLE访问字段的值。检查访问字段是否可为空的唯一可靠方法似乎是使用DAO并检查
myField.Required。这是多么可悲?必须在 2012 年向 .net 项目添加 DAO 引用... -
我在 .NET 1.0 Beta 中的经验是,通过 COM 互操作的 DAO 最适合您尝试做的事情......或者如果可以的话,切换到 SQLite :)跨度>
标签: c# database ms-access ado.net dao