2011-02-25 53 views
4

我目前正在开发一个需要通过ODBC连接获取数据库模式的项目。主要是因为源可能是Access数据库,SQL Server,Oracle等。 这样我就可以将客户模式重新创建为SQL数据库。ODBC架构 - 如何找到关系?

一切工作正常,但我无法找到一种方法来检索表之间的关系,我无法找到任何关于此问题的MSDN。如果这不能完成,那么我需要知道另一种通用这样做。

在此先感谢您的任何答案。

回答

3

如果您直接使用ODBC API,则可以使用API​​ SQLForeignKeys。但是,由于您使用的是OdbcConnection对象,因此使用API​​执行此任务将是一个痛苦的过程。那么,对于这个问题,直接使用ODBC API来做任何事情都是很多的工作。

编辑我建议使用OdbcConnectionGetSchema'ForeignKeys'作为集合名称的可能性。但是,我研究了这一点,不幸的是,OdbcConnection似乎不支持该集合。

因此,除了直接使用SQLForeignKeys(或进行特定于数据库的调用)之外,似乎ODBC并不会提供一条简单的途径来收集这些信息。如果有人可以用一个很好的机制来提供答案,我会删除这个答案,因为它现在唯一的价值就是指出我不知道如何清楚地找到信息。

+1

我使用内置OdbcConnecton对象的.NET并调用GetSchema()。如果我无法从这个对象中得到我所需要的,那么我可能需要求助于调用ODBC API。我不得不弄清楚如何通过C#访问这些文件,因为我不确定它们实际上安装了哪些DLL。 – TyCobb 2011-02-26 00:15:29

+1

@TyCobb:我可能已经猜到了你是如何访问它的。我将尝试查看是否可以确定OdbcConnection代码是否使用了SQLForeignKeys。不过,我答应我的妻子我会在13分钟后回家......我迟到了。但我只是想出了一个让我困扰了一天的bug,所以这一定是值得的。在任何情况下,如果您可以避免直接使用API​​,那将会很好;这些是直接使用的主要麻烦。 – 2011-02-26 00:19:52

+0

非常感谢您的帮助。我可以继续打开ODBC32.dll,看看我能用它做什么。你至少让我有一个计划B. – TyCobb 2011-02-26 00:29:55