您如何获得 MS Access 数据类型的列表?

Posted

技术标签:

【中文标题】您如何获得 MS Access 数据类型的列表?【英文标题】:How do you get a list of MS Access data types? 【发布时间】:2009-07-22 19:42:48 【问题描述】:

我正在尝试在 C# 程序的组合框中列出 Microsoft Access 2000-2007 中的数据类型(取决于 MS Access 数据库版本)。我怎样才能做到这样的事情?

【问题讨论】:

您想要 Access 数据类型还是 Jet/ACE 数据类型?可能由于您使用的是 C#,因此您只需要 Jet/ACE 数据类型,但它可能是您正在使用的数据库由 Access 创建并使用特定于 Access 的数据类型(通常是带有扩展的常规 Jet/ACE 数据类型)属性,例如,超链接字段,它是一个带有特定设置的备注字段,向 Access 表明它是一个超链接字段,而不仅仅是一个常规的备注字段)。 是的,我想使用特定的 MS Access 数据类型。如果我没记错的话,ACE 是否与 MS Access 2000-2007 兼容?我正在尝试使我的程序能够打开 MS Access 2000-2007 数据库。例如,如果我打开一个 MS Access 2003,我希望我的程序能够使用特定于 MS Access 2003 的任何数据的数据类型。如果我打开一个 MS Access 2007 数据库,它将用于 MS Access 的任何数据的数据类型2007... 我正在结束这个问题,因为它不够彻底,我想知道其他一些事情......这是新问题的链接:***.com/questions/1172617 【参考方案1】:

我认为不可能在运行时询问引擎来枚举它支持的数据类型。例如,DAO 不会透露一些 Jet 4.0 数据类型,例如 NCHARBINARY; ADO 将显示 Access 数据库引擎从未支持的数据类型;只有 ACEDAO 会显示多值类型。

我认为你需要提前知道每个版本的引擎支持的数据类型,然后在运行时选择合适的集合。​​

Jet 4.0 数据类型(包括 Access2000 到 2003)和各种同义词可以在here 找到(还应该提供一些关于 Jet 4.0 新类型的提示,以防万一您需要支持早期版本的引擎)。

ACE (Access2007) 添加了附件类型;还有多值(“复杂”)类型以支持 SharePoint 列表:我认为您需要自己决定多值类型是不同的类型还是仅仅是现有类型的变体。 Access2007 Help中有一些细节。

【讨论】:

那么你的意思是我应该添加对ACEDAO的引用并使用它? 我可以将 ACEDAO 与 MS Access 2000-2003 一起使用,还是仅适用于 MS Access 2007?【参考方案2】:

Microsoft.Office.Interop.Access.Dao.DataTypeEnum

当然,您需要添加引用,我非常讨厌添加对 Office 的引用,因为您与 Office 的某个版本绑定在一起,而且我讨厌每次升级时都更新代码。

【讨论】:

DAO 只会为您提供 Access2000 之前的数据类型加上 DECIMAL(但不是比例和精度值),不会给您例如Jet 4.0(Access2000 及更高版本)或多值类型(Access2007 及更高版本)的 NCHAR 和 BINARY 数据类型。 不能将 DAO 与后期绑定一起使用,这意味着您不需要参考?其次,如果您正在使用在 Access 2007 和早期版本中创建的文件,则需要特定于 DAO 版本的检查,因为 DAO 3.6(Jet 4.0,或 Access 2000、2002 和 2003)已被 Jet 取代随 Access 2007 提供的 /ACE 特定的 DAO 版本,并添加了一些新的数据类型(不是很有用的数据类型——主要是为了与 Sharepoint 兼容)。 “不能将 DAO 用于后期绑定”——不。 DAO 3.6 不会显示 NCHAR 和二进制数据类型。

以上是关于您如何获得 MS Access 数据类型的列表?的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 报告排序

如何设置MS-Access文本框以根据表值直接输入您正在键入的内容?

如何在 MS Access 中创建一个查询,允许您汇总每个客户的总成本?

SQL Server 后端缺少 MS Access 数据库复选框列表筛选器

MS Access:如何在 Access Web App 中添加 15 天至今(数据类型)

MS-Access - 从超链接数据单击打开表单