当前位置: 代码迷 >> Informix >> informix中导出byte类型数据的有关问题
  详细解决方案

informix中导出byte类型数据的有关问题

热度:6885   发布时间:2013-02-26 00:00:00.0
informix中导出byte类型数据的问题?
表中有个字段是byte类型,想把该字段和其他类型字段的数据导出到文本文件中,但是导出的都是乱码,而且还被截断了一部分。我查了下文档,按照文档上的格式该了多次,还是不对。之前有一次数据不是乱码,但仍然只导出了一部分。
下面是代码,请高手指教!!

bool CDBBackupApi::BackupEmstopo(const string& strEditPath)
{
EXEC SQL begin declare section;
int iemsid = 0;
int ilength = 0;
int icrc= 0;
loc_t cat_descr;//////////主变量声明
char arcCursor[20];
EXEC SQL end declare section;

CreateVar(NULL, arcCursor, NULL);

EXEC SQL declare :arcCursor cursor for
select emsid, length, crc
from emstopo order by emsid;

EXEC SQL open :arcCursor;

string strFileName = strEditPath + "\\emstopo.unl";
ofstream out_file( strFileName.c_str() );

  //填充loc_t结构体信息
cat_descr.loc_loctype = LOCMEMORY;
cat_descr.loc_oflags = 0;
cat_descr.loc_mflags = 0;
cat_descr.loc_oflags = 0;

for ( ; ; )
{

EXEC SQL fetch :arcCursor into :iemsid, :ilength, :icrc;

if (strncmp( SQLSTATE, "00", 02) != 0 )
break;

cat_descr.loc_bufsize = -1;
cat_descr.loc_size = -1;


EXEC SQL select topo into :cat_descr from emstopo where emsid = :iemsid;
out_file<<iemsid<<"|";
string strtopo;
  //写byte类型字段数据
if (cat_descr.loc_size != 0)
{
out_file.write(cat_descr.loc_buffer, cat_descr.loc_size);

}
out_file"|"<<ilength<<"|"<<icrc<<"|"<<endl;

delete[] pbyBuffer;
pbyBuffer = 0;

}

EXEC SQL close :arcCursor ;
FreeVar(NULL, arcCursor, NULL);

out_file.close();

return true;
}


------解决方案--------------------------------------------------------
好像没什么问题嘛。 
把cat_descr.loc_size = -1; 这一行去掉看看。

另外可以在取之后打印一下loc_status看看。
  相关解决方案