Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用cpp从ESE数据库读取记录_C++_Esent_Extensible Storage Engine - Fatal编程技术网

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

C++ 如何使用cpp从ESE数据库读取记录,c++,esent,extensible-storage-engine,C++,Esent,Extensible Storage Engine,我已经使用JetOpenDatabaseAPI成功地打开了ESE数据库。 为了读取记录,我打开了“MSysObjects”表,并将当前索引设置为“RootObjects” 以下是我的代码(无错误处理): 为了读取记录,我尝试了jetrevecolumns函数从当前记录中检索多个列值。我还尝试了JetrievedColumn函数,但没有得到实际结果 有人知道如何使用cpp从现有和未安装的ESE数据库文件中读取记录吗?esent引擎会提示您错误代码出了什么问题。在这里查找: 通常,在您真正尝试通过

我已经使用JetOpenDatabaseAPI成功地打开了ESE数据库。 为了读取记录,我打开了“MSysObjects”表,并将当前索引设置为“RootObjects”

以下是我的代码(无错误处理):

为了读取记录,我尝试了jetrevecolumns函数从当前记录中检索多个列值。我还尝试了JetrievedColumn函数,但没有得到实际结果


有人知道如何使用cpp从现有和未安装的ESE数据库文件中读取记录吗?

esent引擎会提示您错误代码出了什么问题。在这里查找:


通常,在您真正尝试通过JetRetrieveColumn读取数据之前,您必须准备JET\u RETRIEVECOLUMN,方法是选择要检索的列、准备缓冲区/指针等。当然还有更多内容,但您的问题应该更具体一些。

是,福蒂斯给出了很好的建议。具体的错误代码非常有价值。由于您正在寻找示例代码,因此一些更全面的示例代码是用C#编写的

请看一看位于的eSentteroptests。搜索RetrieveColumn,它会让您很好地了解按哪个顺序调用哪个订单。当然,这不是正确的语言,但你很容易翻译

我假设您使用MSysObjects作为示例,因为每个数据库都有该表。它是供内部使用的,并且可以相当隐秘地破译


-martin

Hi Fotis Mouratidis,您能给我一个从现有ESE数据库检索数据的示例吗?我现在可以读取integer类型的列,但仍然无法读取具有字符串值的列。我收到错误JET\u errColumnNotFound。我确信我给出的columnid是正确的。请告诉我如何从表中读取字符串值。下面是代码
JET\u COLUMNID COLUMNID=12;wchar_t缓冲区[2048]={0};err=::jetreetrievecolumn(sessionID、tableId、columnid和buffer、sizeof(buffer)、NULL、0、NULL)如果您收到错误消息,您应该信任它并再次查找columnId。在调用JetRetrieveColumn之前,您应该调用JetGetColumnInfo以获取正确的ColumnId。
JetRetrieveColumn
使用void*作为缓冲区,因此编译器在类型检查方面不会有太大帮助。您应该传入
buffer
&buffer[0]
作为参数。你可能会用你的代码破坏你的堆栈。
err = ::JetOpenTable(sessionID,dbID,"MSysObjects",NULL,0,0,&tableId);
err = ::JetSetCurrentIndex( sessionID, tableId, "RootObjects" );
err = ::JetMove( sessionID, tableId, JET_MoveFirst, 0 );