前景提要
HDC调试需求开发(15万预算),能者速来!>>> 代码如下所示:otl_stream s; otl_lob_stream lob; otl_long_string lstrCont(1024*1024); //下面是构建成Sql语句,查询id大于某个值的100行中id,url,content三列的值 CString strSql; strSql.Format( "SELECT id, url, CONTENT FROM PUBOPANALYSIS where id > %d And RowNum < 100", m_Pid); try { s.set_lob_stream_mode(true); s.open(1, strSql.GetBuffer(), g_otlOra); strSql.ReleaseBuffer(); while (!s.eof()) { WebPage wp; ZeroMemory(chUrl, 1024*2); //这里清空获取Url的值的变量,如果这里有个清空lob的值的函数或者方法,我想问题应该可以解决 s>>wp.nId>>chUrl>>lob; wp.strUrl = chUrl; while (!lob.eof()) //循环获取Content的内容 { lob>>lstrCont; strMsg.Format( "%s", lstrCont.v ); wp.strCont += strMsg; } lob.close(); arr.Add(wp); //这里把查询下来的数据拼成一个数组(或链表) } 出现的情况描述如下: 正如上述代码的SQL语句,我是想从表中获取三个字段的值分别是Id,Url和Content,其中Content是Clob类型的。 程序执行SQL语句:“SELECT id, url, CONTENT FROM PUBOPANALYSIS where id > %d And RowNum < 100”之后可以查询出100条。
现在我需要循环读出查询出来的每一行数据,但是发现问题是这样的,问题出现在Content的读取上,举个例子: 假如读取出来的第一行的Content是“1234567890”,我取出完毕; 接着取出第二行,第二行的Content是“abcd”,比第一行短,但是读取出来的内容却是:“abcd567890”; 之后的情况类似.... 请问各位,有什么方法解决吗?我找了很多资料没有搞懂这个怎样初始化缓冲区..用了好几次的s.flush()都没有效果。。。