1

我有一些旧的 ODBC 连接编码,它使用 SQLGetInfo 函数在请求时收集各种连接详细信息。该代码目前正在重构为 .NET,但是它仍然需要保持少量的向后兼容性,直到其余区域也重构为 .NET

我需要能够使用 c# OdbcConnection.GetSchema() 重现以下 c++ 代码

char strInstanceName[200];
SQLSMALLINT lengthReturned;
SQLGetInfo(myhInstance, SQL_SERVER_NAME, strInstanceName, 200, &lengthReturned);

char strDSN[200];
SQLSMALLINT lengthReturned;
SQLGetInfo(myhInstance, SQL_DATA_SOURCE_NAME, strDSN, 200, &lengthReturned);

char strActiveStmts[200];
SQLSMALLINT lengthReturned;
SQLGetInfo(myhInstance, SQL_ACTIVE_STATEMENTS, strActiveStmts, 200, &lengthReturned);

char strActiveConns[200];
SQLSMALLINT lengthReturned;
SQLGetInfo(myhInstance, SQL_ACTIVE_CONNECTIONS, strActiveConns, 200, &lengthReturned);

我花了几个小时查看文档并搜索网络,但我无法找到或理解使用 OdbcConnection.GetSchema() 的等价物,即使文档和网络让我相信这是获取的功能所有这些信息。

示例代码会很好:)

致敬 DIG

4

1 回答 1

2

通过 MSDN 论坛回答。

基本上,我需要的信息无法通过 .NET 框架获得,我需要使用 InteropServices 和 DllImport 在 c# 中直接调用 ODBC API。

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/4579ccbc-4977-493e-a863-94ecdfe181b4/#9d74fc73-7be9-482b-b6db-1b4c256cb355

挖的

于 2013-01-23T10:00:45.143 回答