как читать записи из базы данных ESE с помощью cpp

Я успешно открыл базу данных ESE, используя JetOpenDatabase API.
Чтобы прочитать записи, я открыл таблицу «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 функция, но я не получил фактический результат.

Кто-нибудь знает, как читать записи из существующих и несмонтированных файлов базы данных ESE с помощью cpp?

1

Решение

Движок esent дает подсказку о том, что пошло не так по коду ошибки. Посмотрите здесь:
https://msdn.microsoft.com/en-us/library/gg269297(v=exchg.10).aspx

Как правило, вы должны подготовить JET_RETRIEVECOLUMN, прежде чем вы действительно попытаетесь прочитать данные через JetRetrieveColumn (ы), выбрав, какие столбцы вы хотите получить, подготовив буфер / указатели и т. д. Конечно, это еще не все, но вы должны быть немного более конкретны в своем вопросе.

1

Другие решения

Да, Фотис дает хороший совет. Конкретные коды ошибок очень ценны. Поскольку вы ищете пример кода, часть более полного примера кода написана на C #.

Взгляните на EsentInteropTests на https://managedesent.codeplex.com/SourceControl/latest. Ищите RetrieveColumn, и он даст вам хорошее представление о том, в какие заказы звонить, в какой заказ. Конечно, это не правильный язык, но вы можете легко перевести.

Я предполагаю, что вы используете MSysObjects в качестве примера, потому что каждая база данных имеет эту таблицу. Это для внутреннего использования, и может быть довольно загадочным для расшифровки.

-Мартин

1

По вопросам рекламы [email protected]