ADOでJetデータベースに接続しようとするとクラッシュする

村田敦 0 評価のポイント
2025-01-22T04:56:46.2166667+00:00

Visual C++でADOを使用してJetデータベースに接続しようとすると、Openの実行でクラッシュする事象が発生しています。
イベントログを見ますと発生個所はmsjetoledb40.dllになっています。

事象の発生は環境に依存しているようなのですが、条件については特定できていません。
報告は昨年あたりから増えていますが、Windows11でOffice365を使用している場合が考えられます。

発生個所のソースコードは以下のようになっています。

ADODB::_ConnectionPtr		pConnection;
CString conect.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;",dbname,pass);
pConnection.CreateInstance(__uuidof(ADODB::Connection));
pConnection->PutMode(ADODB::adModeReadWrite);
_bstr_t conect_bstr(conect);
pConnection->Open(conect_bstr,"","",ADODB::adConnectUnspecified);

プログラムは32ビットアプリケーションとして作成しています。
データベースファイルのファイルパスとパスワードに間違いがないことは確認済みです。
Jet4.0を使用しているのが問題である可能性もあるため、
ACE16.0に変更して、事象が発生している環境で実行しましたが同様の結果となりました。

この事象の対応策があれば教えていただけないでしょうか。

Office
Office
ワープロ、電子メール、プレゼンテーション、データ管理と分析など、一般的なビジネス タスクをサポートする一連の Microsoft 生産性ソフトウェア。
105 件の質問
Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
108 件の質問
C++
C++
C プログラミング言語の拡張機能として作成された高レベルの汎用プログラミング言語。低レベルのメモリ操作機能に加えて、オブジェクト指向、汎用、関数型の機能を備えています。
26 件の質問
{count} 件の投票

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。