数据库里有个字段Code为char类型,程序里获取得到文件名为strName,(CString类型的)
为什么下面这句话出错呢
m_pRecordset->putcollect(_variant_t("Code"),_variant_t(strName));我用getbuffer转换一下也不行
char *p;
p=strName.GetBuffer(strName.GetLength());
strName.ReleaseBuffer;
m_pRecordset->putcollect(_variant_t("Code"),p);

解决方案 »

  1.   

    是要把cstring类型的文件名写入char类型的数据库字段里
      

  2.   

    用WideCharToMultiByte函数来转换。
      

  3.   

    直接使用(LPCTSTR) strName不就行了?
    另外GetBuffer的用法有错误,应该在使用指针之后再ReleaseBuffer()。而且GetBuffer里传入0就可以了。
      

  4.   

    char* -> CStringchar* buf = "...";
    CString str(buf);
    即可
      

  5.   

    (LPCTSTR) strName这个方法试过了不行
      

  6.   

    http://blog.csdn.net/zyq5945/archive/2010/05/12/5581453.aspx
      

  7.   

    这样:/C++m_pRecordset->PutCollect("姓名",_bstr_t(m_name));
    m_name是CString的
      

  8.   

    这两天CSDN确实不太给力唉各种功能缺失
    再发一次好了:
    m_pRecordset->PutCollect("姓名",_bstr_t(m_name));
      

  9.   


    你确定_bstr_t((LPCSTR) strName)不行??
      

  10.   


    是不行
    m_pRecordset->putcollect(_variant_t("Code"),(LPCSTR)(strName));
    或者
    m_pRecordset->putcollect(_variant_t("Code"),_bstr_t((LPCSTR)(strName)));
    都不行字段名是正确的,我想就是CString存入char类型出错了,总不会是其他错误吧
      

  11.   

    我做了个编辑框显示表里的第一条记录
    _variant_t varName = m_pRecordset->GetCollect(_variant_t(_T("Code")));
    SetDlgItemText(IDC_NAME,strName)
    读取显示是没问题的,就是输入的时候出错了
      

  12.   

    http://hi.baidu.com/zhaquanmin/blog/item/231d01094361c3d863d98662.html
    课程设计的时候给我很大帮助的网站。不知能否帮楼主找到灵感
      

  13.   


    同样的代码在输入字段为nvarchar类型的字段的时候就能正常输入,char类型的该怎么转啊
      

  14.   

    改成指定的文件名入库就可以,比如00
    m_pRecordset->putcollect(_variant_t("Code"),00);
    字符串该怎么入呢
      

  15.   


    char buf[100]="";
    for(int i=0;i<strName.GetLength();i++)
       buf[i]=strName.GetAt(i);
      

  16.   

    提示cannot convert parameter 2 from char to const class _variant_t
      

  17.   

    找到原因了
    CString strName = file.GetFileTitle();//比如"55.ico"
    m_pRecordset->putcollect(_variant_t("Code"),_variant_t(strName));
    由于Code是char类型的,所以一直报错
    我把strName存入varchar类型的就可以
    请教大家,得到文件名strName后怎么把它存入char类型里啊
      

  18.   

    用 W2A(...)函数
    你百度下有很清楚的说明 或者直接去看vc头文件库
      

  19.   

    不好意思是我没注意,char字段的长度只设为了2,读取文件名超过长度所以一直报错,CString存入char是可以直接转的,谢谢大家,马上结贴给分