【问题标题】:Reading Database structure in visual c++在 Visual C++ 中读取数据库结构
【发布时间】:2012-06-08 19:39:04
【问题描述】:

我正在尝试编写代码来帮助我阅读 .accdb 数据库结构,这意味着它将为我提供存在的表的数量、它们的结构,即字段的数量和名称、每个表的索引信息。简而言之,所有与结构有关的东西。我不是说存储在表中的值或数据。

例如,如果我有一个数据库,比如说 xyz.accdb,它有 3 个表 - table1、table2、table3

table1 有文件名,没有
表 2 -> 地址、名称
table3 -> 姓名,职业

现在我的代码应该返回表数,即 3,每个表中的字段数,在每种情况下为 2,加上每个表中各个字段的名称。

任何建议、想法、代码片段、任何东西——最好是 MSVC++ ——将不胜感激。

【问题讨论】:

  • 你是如何读取数据库的? OLEDB? ODBC? ADO?
  • 正如@Adriano 所说,有什么联系?它可以用来获取模式信息。
  • @Adriano - 任何人.. 任何事......只要符合我的目的并解决我的问题,都无所谓。
  • @Remou - 实际上只有 Dao 类支持在没有查询或 netn 的情况下读取表模式的功能......但困难在于它只能用于读取 .mdb 文件而我想读取 .accdb 文件.我希望你明白了。
  • 您可以使用DAO获取ACCDB的架构,但您可能需要下载(microsoft.com/en-us/download/details.aspx?id=13255)否则,您可以使用连接对象。

标签: database visual-c++ ms-access mfc


【解决方案1】:

您应该能够从MSysObjects 表中获得所需的信息:

表格查询示例:

SELECT MSysObjects.Name
FROM MsysObjects
WHERE (Left$([Name],1)<>"~")
AND (Left$([Name],4) <> "Msys")
AND (MSysObjects.Type)=1
ORDER BY MSysObjects.Name;

更多示例请参见How can I retrieve names of database objects (queries /forms/ table/ reports/ modules/ macros) using a query?

【讨论】:

  • 由于很难解决的权限问题,从 MS Access 外部无法访问这些表是很常见的。我不建议在 MS Access 之外使用不受支持的系统表。
  • 我承认这只是一个起点。解决此问题的更可靠方法肯定是使用 Office Automation for Access。我很想拒绝这个问题,因为它并没有显示出最少的努力,而简单的搜索已经找到了很多有用的起点。
  • @Filburt 很抱歉让你失望了.. 但我搜索、浏览了.. 很多.. 仍在这样做.. 但我发现的所有内容都需要一些查询或其他内容才能进入数据库,它已经打开了..我的问题是,如果有一个未知的数据库,我想知道其中的表名,我该怎么做>
  • @Filburt - p.s.在这里张贴是最后的选择。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多