两个CString类型字符串。
CString aa,bb;aa="工程师";
bb="学生";aa=aa+bb;
如果我把aa存入数据(DAO+Access)
就会报出"内存不足"的错误。后来我做了一个测试,直接 aa="工程师"+"学生"; 再存入,错误依旧;
但是我存入的如果是 aa="工程师学生";则正常。不知道为什么,问题肯定是出在"+"这个连接符上。
但什么原因,怎么解决使终想不出办法来!因为我用的是多个CString 类型变量,最后要把它们组合在一起存入数据库。
期待高人!

解决方案 »

  1.   

    aa=CString("工程师")+CString("学生");你的存储数据代码是否写的有问题?
      

  2.   

    CString相加的时候,拼接的sql语句语法不对...
      

  3.   

    把多个CString拼成1个CString后,''修饰再插入数据库
      

  4.   

    第一种情况比较蹊跷(是因为Access97不支持)
    第二种情况MSDN说的很清楚了,原文是:The first argument must be a CString.
      

  5.   

    不知道为什么,问题肯定是出在"+"这个连接符上。 
    //不会是这个原因。是否用到CString::GetBuffer之类的操作?
    //最好贴出代码
      

  6.   


    嗯,肯定是SQL语句写错了,这种情况常见。
      

  7.   

    aa=CString("工程师")+CString("学生"); 你的存储数据代码是否写的有问题?//----------------------------------
    代码存储代码肯定不会有问题,有问题: 我存入的如果是 aa="工程师学生";就不会正常了。 把多个CString拼成1个CString后,''修饰再插入数据库
    //----------------------------------
    我就是想把多个CString用"+"拼成一个CString存入数据库啊,可是出错。
    请提供你的代码。
    //---------------------------------
    代码基本上就是我描述的那样,因为这个错误就是出现在"+"这个连接符上,为什么呢?因为我直接存入的aa="工程师学生"是对的,没有错误,但我存入的aa="工程师"+"学生" 就报内存错误。aa="工程师"+"学生"; 
    可以通过编译吗?
    //---------------------------------
    当然可以,不是说了有些情况能正常存入数据库么。下面我整理一下,把相关的原代码贴出来,供大家分析。

    CString aa,bb; 
    aa="工程师"; 
    bb="学生"; aa=aa+bb;if(m_dataSet.IsOpen())
    m_dataSet.Close();
    m_dataSet.Open();//此语句后开始调用数据集类m_dataSet.AddNew();...
    //SetDlgItemText(IDC_EDT_RDiagnose,aa);别的地方我先往编辑框设值。下面再取,此处目的是把值显示在界面上。
    GetDlgItemText(IDC_EDT_RDiagnose,m_dataSet.m_DoctorDiagnose);...
    m_dataSet.Update();if(m_dataSet.IsOpen())
    m_dataSet.Close();      
      

  8.   

    这是CString对字符串常量的代码优化造成的,你可以跟踪看一下CString里面的数据地址以增进了解。
    正确的方法应该是:CString aa(_T("工程师")),bb(_T("学生")); // 构造函数会正确分配地址,而赋值语句会优化为指向常量字符串。因此后面的+操作是对常量字符串地址进行操作,会报内存错误。可以认为这是CString的一个不足,但是不正确的使用也有关系。
    aa += bb;
      

  9.   

    CString aa(_T("工程师")),bb(_T("学生")); // 构造函数会正确分配地址,而赋值语句会优化为指向常量字符串。因此后面的+操作是对常量字符串地址进行操作,会报内存错误。可以认为这是CString的一个不足,但是不正确的使用也有关系。
    aa += bb;
    可不可以换成char,strcat.最好别写到一行。
      

  10.   

    看来是我的方法不对,我只有换成char了,由于字符串太多,我没有办法都用构造函数去这样构造每个字符串变量。
    不过Mackz 大哥总算让我明白了其中的原因,再次感谢。