怎样odbc连接mysqld,用CDBVariant取出mediumblob字段的内容?

walkany 2004-08-03 03:32:35
下面是我的程序片断,但是得到的数据总是不正确。请问怎么操作才对阿

rs.Open(AFX_DB_USE_DEFAULT_TYPE,"select content,local_id From precontent ");

//遍历每一个数据库中的关键词,在一篇文章中看看是否能够发现一些关键词。如果发现则将发现
//关键词的纪录对应的文章取出,作为帖子和宣传语句合成作为帖子发表。

while(rs.IsEOF()==false)
{
CString str;
CDBVariant iptype;
rs.GetFieldValue("content",iptype);
//CDBVariant varprice;
//str.Format("type:%s,avg(price):%f",strtype,varprice.m_dblVal);
//AfxMessageBox(str);

if(getword((char*)wordarray,&count,iptype.m_pstring)>0)
{
//CString *str1,str2;
//str1=ipadd.m_pstring;
//str2.Format("%i",iptype.m_iVal);
//paseripadd(*str1,*str2);
for(numword=0;numword<count;numword++)
{

//rs.Open(AFX_DB_USE_DEFAULT_TYPE,"select article,local_id From precontent where");
if(lonepage1->FindString(0,wordarray[numword])>0)
{//发现关键词。记录关键词所对应的文章。

CDBVariant id;
rs.GetFieldValue("local_id",id);
//int tmpi=(int)id.m_lVal;
sprintf(sqlstr,"select article,local_id From precontent where local_id=%d",id.m_lVal);

rs1.Open(AFX_DB_USE_DEFAULT_TYPE,sqlstr);

CDBVariant artic;
rs1.GetFieldValue("article",artic);


if(artic.m_dwType==DBVT_STRING)
{
//articbody.Format("%s",artic.m_pstring->GetBuffer(artic.m_pstring->GetLength()));

articlen=artic.m_pstring->GetLength();
articbody=(char *)malloc(articlen+1);
memcpy(articbody,artic.m_pstring->GetBuffer(articlen),articlen);
// printf("an string");
}else if(artic.m_dwType==DBVT_BINARY)
{
articlen=artic.m_pbinary->m_dwDataLength;
articbody=(char *)malloc(articlen+1);
memcpy((void*)articbody,artic.m_pbinary->m_hData,(unsigned int)articlen);
...全文
99 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahu 2004-08-04
  • 打赏
  • 举报
回复
看看是不是这个原因,用GlobalLock
char *pData = (char*)GlobalLock(artic.m_pbinary->m_hData);
memcpy((void*)articbody,pData ,(unsigned int)articlen);
GlobalUnlock(artic.m_pbinary->m_hData);

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧