1

JetOpenDatabase APIを使用して、ESE データベースを正常に開くことができました。レコードを読み取るために、「MSysObjects」テーブルを開き、現在のインデックスを「RootObjects」に設定しました。

これが私のコードです(エラー処理なし):

err = ::JetOpenTable(sessionID,dbID,"MSysObjects",NULL,0,0,&tableId);
err = ::JetSetCurrentIndex( sessionID, tableId, "RootObjects" );
err = ::JetMove( sessionID, tableId, JET_MoveFirst, 0 );

レコードを読み取るために、現在のレコードから複数の列の値を取得するためにJetRetrieveColumns関数を試しました。JetRetrievedColumn関数も試しましたが、実際の結果は得られませんでした。

cpp を使用して、既存のマウントされていない ESE データベース ファイルからレコードを読み取る方法を知っている人はいますか?

4

2 に答える 2

1

はい、Fotis は適切なアドバイスを提供します。特定のエラー コードは非常に重要です。サンプル コードを探しているので、より包括的なサンプル コードの一部は C# で記述されています。

https://managedesent.codeplex.com/SourceControl/latestで EsentInteropTests を見てください。RetrieveColumn を検索すると、どの注文をどの順番で呼び出すかについての良いアイデアが得られます。確かに、それは適切な言語ではありませんが、簡単に翻訳できます。

すべてのデータベースにそのテーブルがあるため、例として MSysObjects を使用していると思います。これは内部使用のためのものであり、解読するのはかなり不可解です。

-マーティン

于 2015-02-12T18:38:57.670 に答える