MFCのCDatabase::SetLoginTimeoutについて

解決


penny  2013-02-27 21:49:57  No: 73627

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

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 16:14:29  No: 73628

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

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

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

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

以上。参考まで


オショウ  2013-02-28 16:15:16  No: 73629

反映の間違い・・・

誤字すいません。


penny  2013-02-28 18:59:35  No: 73630

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

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

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

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


オショウ  2013-03-03 05:29:38  No: 73631

こんな情報見つけました

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

まぁ〜そういうことで。

以上。参考まで


bun  2013-03-04 21:48:41  No: 73632

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


penny  2013-03-05 20:35:17  No: 73633

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

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

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

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

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

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


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加