如何使用cpp从ESE数据库中读取记录
how to read records from ESE database using cpp
我已使用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
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- C++ 仅读取输入文件中的部分(不是全部)数据以添加到记录中
- 套接字记录未读取任何消息
- 尝试将数据从记录读取到程序(C++)时难以捉摸的错误
- 文件仅读取1个记录,然后到达文件的末尾,即使还有其他记录
- 读取字符 ASCII 值并将其记录到矢量
- c++ 从文件中读取双倍,但如果程序遇到字符串,则记录
- 从文本文件中读取记录
- C++分配 - 动态分配数组并从文件中读取记录 - 挂起
- 优化所有记录的 SQLite 读取
- 正在比较标头记录值和读取程序崩溃的行数.C++
- 如何使用cpp从ESE数据库中读取记录
- 写入和读取记录以.dat文件C++
- 创建一个二进制文件,向其中添加信息,并从中读取所有记录(电话簿)
- 速度控制在100Hz至10KHz范围内读取小记录从文件上的窗口
- 从缓冲区读取记录
- 如何在没有换行符的情况下读取CSV记录"rn"?