如何使用cpp从ESE数据库中读取记录

how to read records from ESE database using cpp

本文关键字:读取 记录 数据库 ESE 何使用 cpp      更新时间:2023-10-16

我已使用JetOpenDatabaseAPI成功打开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数据库文件中读取记录吗?

esent引擎会提示您错误代码出了什么问题。在这里查找:https://msdn.microsoft.com/en-us/library/gg269297(v=exchg.10).aspx

通常,在通过JetRetrieveColumn读取数据之前,您必须准备JET_RETRIVEECOLUMN,方法是选择要检索的列、准备缓冲区/指针等。当然还有更多内容,但您应该更具体地回答您的问题。

是的,Fotis给出了很好的建议。特定的错误代码非常有价值。由于您正在寻找示例代码,一些更全面的示例代码是用C#编写的。

查看EsentInteropTestshttps://managedesent.codeplex.com/SourceControl/latest.搜索RetrieveColumn,它会让你很好地了解按哪个顺序调用哪个订单。当然,这不是正确的语言,但你可以很容易地翻译。

我假设您使用MSysObjects作为示例,因为每个数据库都有该表。它是内部使用的,破译起来相当神秘。

-martin