前面是往数据库里面写一个CString,数据库对应的域是text,在存储(update)的时候就出现上述问题。if( !tg->Html.IsEmpty() ) //如果Html不是空,则存储
{
  try
  {
    AddNew();
    //如果是varchar类型就可以用下面这句
    //m_HtmlSrc = tg->Html.Left(70) ;
    m_HtmlSrc = tg->Html ;
    m_URLNo = tg->URLNo ;
    Update();
  }catch(CDBException* e)
  {
    AfxMessageBox(e->m_strError + "\n不能加入HTML信息" , MB_OK);
    e->Delete();
    return ERR ;
  }
}
不是每次都报错的,多数情况下是会通过的。
//现在我猜测是:我读进来的Html字符串有问题,导致不能将cache中的数据存入数据库。
/**********************
*                     *
*   请高人指点         *
*                     *
***********************/

解决方案 »

  1.   

    e->m_strError 报的错是什么//如果是varchar类型就可以用下面这句
    根据你这句猜测的话
    tg->Html.Left(70) 改成tg->Html.Left(30) 
      可能可以存进 你试试
      如果可以 相信会是乱码
      

  2.   

    不要使用CString来进行更新,通过一个生成的字符串指针进行操作,把这块内存指针中的内容显示出来,进行判断,出现这种情况的原因主要是因为指针越界了,在CString中,是系统自动管理内存的,当退出作用范围的时候,相应的内存就会修改,你检查一下有没使用局部变量传递值。
      

  3.   

    本人已经知道怎么回事了,原因是
    RFX_Text(pFX, _T("[HtmlSrc]"), m_HtmlSrc,80000);
    这句话的最后一个参数   省却值是 255 ,
    如果要加入数据库的字符串长于255 , 就会   非法操作 ,
    没有  Exception , 所以应该显示的指定一个较大的值。
    谢谢大家帮忙,散分!
      

  4.   

    我faint了,
    给分都不成,这个东东是个什么系统
    我都给了快一个小时了,我受不了了!!!!!!!!!!!!!