ESE データベース ファイル、つまり WebCacheV01.dat を解析しています。これは、IE 10 がすべての閲覧履歴とその他の情報の保存を開始したファイルです。このファイルを解析するために JET Blue CPP API を使用しています。
整数型または長整数型の列値を読み取ることはできますが、文字列型の列値を読み取ることはできません。
たとえば、「MSysObjects」テーブルを開いて、「Name」列の値を取得したいとします。
サンプルコードはこちら
for( err = ::JetMove( sessionID, tableId, JET_MoveFirst, 0 );
JET_errSuccess == err;
err = ::JetMove( sessionID, tableId, JET_MoveNext, 0 ) )
{
JET_COLUMNID columnid = 12/*columnid of the Name column*/;
char *pszBuff = new char[2048];
if( pszBuff )
{
long lReadBytes;
memset(pszBuff, 0, 2048);
err = ::JetRetrieveColumn( sessionID,
tableId,
columnid,
pszBuff,
2047,
&lReadBytes,
0,
NULL);
delete[] pszBuff;
}
}
JetRetrieveColumn の戻り値は -1507 で、これは JET_errColumnNotFound に他なりません。ESEDatabaseViewer ツールを使用して、MSysObjects テーブルに 25 列が含まれていることを確認しました。つまり、列 18 は無効ではありません。
ESE データベースから文字列値を取得する方法を知っている人がいたら教えてください。
よろしくお願いします。