MFCのCDatabase::SetLoginTimeoutについて

解決


penny  2013-02-27 12:49:57  No: 73627  IP: 192.*.*.*

質問よろしくお願いいたします。

Microsoft Visual C++ 6.0でOracle操作をしております。
その際、CDatabase::OpenEx()でDB接続する際のタイムアウトを制御したく、
CDatabase::SetLoginTimeout()を使用しておりますが、設定が反映されません。
タイムアウトしないという「0」を含め様々な値を試したのですが、全て20秒ほどでのタイムアウトとなります。

何かしらご助言頂ければ幸いです。
よろしくお願いいたします。

============================
try {
    CString strCon;
    strCon.Format("DSN=%s; UID=%s; PWD=%s", "DSN", "UID", "PWD");
    CDatabase db;
    db.SetLoginTimeout(3);
    db.OpenEx(_T(strCon), CDatabase::noOdbcDialog);
} catch (CDBException* e) {
}
============================

編集 削除
オショウ  2013-02-28 07:14:29  No: 73628  IP: 192.*.*.*

CDatabase は、ODBCを使いますので、繁栄されないのでしょう。

C言語でOracleにアクセスするならば、Oracle Clientに搭載
されている、OCIをお使いなるのがよいかと・・・

.NETなら、ODP.NETなんですがネ〜

※  VC++ 6.0ですか・・・
    OSは何をお使いですか?

以上。参考まで

編集 削除
オショウ  2013-02-28 07:15:16  No: 73629  IP: 192.*.*.*

反映の間違い・・・

誤字すいません。

編集 削除
penny  2013-02-28 09:59:35  No: 73630  IP: 192.*.*.*

ご回答ありがとうございます。
また、情報不足申し訳ありません。

OSは、「Windows XP」で開発しており、「Windows XP」と「Windows 7」
環境での使用を予定しております。

「.NET」での開発が良いとは思いましたが、諸事情により「VC++ 6.0」で開発しております。

ODBC使用で反映されないのであれば、CDatabase::SetLoginTimeout()の存在意義は…
OCIと共に調べてみます。
ありがとうございました。

編集 削除
オショウ  2013-03-02 20:29:38  No: 73631  IP: 192.*.*.*

こんな情報見つけました

PRB: 接続のタイムアウトとクエリ タイムアウトの
Microsoft Oracle ODBC ドライバーと OLE DB プロバイダーでは
サポートされていません
http://support.microsoft.com/kb/251248/ja

まぁ〜そういうことで。

以上。参考まで

編集 削除
bun  2013-03-04 12:48:41  No: 73632  IP: 192.*.*.*

C++でやるなら、oo4oがお勧め。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B25252-01/toc.htm

編集 削除
penny  2013-03-05 11:35:17  No: 73633  IP: 192.*.*.*

度々のご回答ありがとうございます。

> Microsoft Oracle ODBC ドライバーと OLE DB プロバイダーでは
> サポートされていません

ODBCを利用すると出来ないのですね。

> C++でやるなら、oo4oがお勧め。

今回、ODBCを利用して接続するというのが第一条件だったようで、
それでタイムアウトを制御できないのであれば、実現しなくても
良いということになってしまいました。
本末転倒な気もしますが、VC6しかり、古い環境を好まれる
プロジェクトでそのようなことに。。

せっかく情報を頂いたのに申し訳ありません。
個人的には、今後のためにoo4oでの接続も試してみたいと思います。
ありがとうございました。

編集 削除