1

要求されたときにSQLGetInfo関数を使用してさまざまな接続の詳細を収集するレガシーODBC接続コーディングがあります。コードは現在.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);

ドキュメントを調べてWebを検索するのに何時間も費やしましたが、ドキュメントとWebから、これが取得する関数であると信じられていても、OdbcConnection.GetSchema()を使用して同等のものを見つけたり理解したりすることはできません。このすべての情報。

サンプルコードがいいでしょう:)

よろしくDIG

4

1 に答える 1

2

MSDNフォーラムから回答しました。

基本的に、必要な情報は.NET Frameworkからは取得できません。InteropServicesとDllImportを使用して、c#でODBCAPIを直接呼び出す必要があります。

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

DIGの

于 2013-01-23T10:00:45.143 に答える