質問よろしくお願いいたします。
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) {
}
============================
CDatabase は、ODBCを使いますので、繁栄されないのでしょう。
C言語でOracleにアクセスするならば、Oracle Clientに搭載
されている、OCIをお使いなるのがよいかと・・・
.NETなら、ODP.NETなんですがネ〜
※ VC++ 6.0ですか・・・
OSは何をお使いですか?
以上。参考まで
反映の間違い・・・
誤字すいません。
ご回答ありがとうございます。
また、情報不足申し訳ありません。
OSは、「Windows XP」で開発しており、「Windows XP」と「Windows 7」
環境での使用を予定しております。
「.NET」での開発が良いとは思いましたが、諸事情により「VC++ 6.0」で開発しております。
ODBC使用で反映されないのであれば、CDatabase::SetLoginTimeout()の存在意義は…
OCIと共に調べてみます。
ありがとうございました。
こんな情報見つけました
PRB: 接続のタイムアウトとクエリ タイムアウトの
Microsoft Oracle ODBC ドライバーと OLE DB プロバイダーでは
サポートされていません
http://support.microsoft.com/kb/251248/ja
まぁ〜そういうことで。
以上。参考まで
C++でやるなら、oo4oがお勧め。
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B25252-01/toc.htm
度々のご回答ありがとうございます。
> Microsoft Oracle ODBC ドライバーと OLE DB プロバイダーでは
> サポートされていません
ODBCを利用すると出来ないのですね。
> C++でやるなら、oo4oがお勧め。
今回、ODBCを利用して接続するというのが第一条件だったようで、
それでタイムアウトを制御できないのであれば、実現しなくても
良いということになってしまいました。
本末転倒な気もしますが、VC6しかり、古い環境を好まれる
プロジェクトでそのようなことに。。
せっかく情報を頂いたのに申し訳ありません。
個人的には、今後のためにoo4oでの接続も試してみたいと思います。
ありがとうございました。