Date: Thu, 10 Jul 2003 12:16:13 +0900
From: Takahashi Kazuhiko <who@example.co.jp>
高橋@川崎市です。
> Nossaといいます。
> 初心者です、昨日から以下の問題ではまっています。
> ご教示ください、よろしくお願いします。
>
> 【やりたい事】
> VC++6.0で、複数のDBへの接続を保持したいのですが、どのようにすればよいでしょ
> うか?
>
> 【やってみた内容】
> 以下のように「CPtrArray」に「_ConnectionPtr」を入れてみました。
> コンパイルでエラーとなります。
CPtrArray は使ったことがないので、分からないのですが、
同じ機能を実現するCArray<> (テンプレートベース)なら、以下のコードで大丈夫です。
#include <afxtempl.h>
void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
// 配列の本体
_ConnectionPtr pConnection[10];
// 初期化
for(i=0; i<10; i++) {
pConnection[i] = NULL;
}
// ポインター配列へ値を格納する。
CArray<_ConnectionPtr*, _ConnectionPtr*> array; // CPtrArray の代わり。
_ConnectionPtr *ppConnection = pConnection;
for(i=0; i<10; i++) {
try {
TESTHR(pConnection[i].CreateInstance(__uuidof(Connection)));
array.Add(ppConnection);
ppConnection++;
}
catch (_com_error &e) {
AfxMessageBox("Error (1) !");
}
}
// 処理
_ConnectionPtr *ppConnection0;
ppConnection0 = (_ConnectionPtr *)array[0];
if ((*ppConnection0) != NULL) {
(*ppConnection0)->Open(......);
}
// 後始末。
for(i=0; i<10; i++) {
_ConnectionPtr *ppConnection;
try {
ppConnection = (_ConnectionPtr *)array[i];
if ((*ppConnection) != NULL) {
if ((*ppConnection)->State != adStateClosed) {
(*ppConnection)->Close();
}
}
}
catch (_com_error &e) {
AfxMessageBox("Error (2) !");
}
}
-----------------------------------------
開発環境 : SQL2000 + Win2000Svr + VC6
高橋 和彦
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|