例如:_RecordsetPtr record;
... // 连接数据库
_variant_t vt; vt.vt = VT_I1; vt.cVal = 'a';  record->PutCollect("Mode",vt); // 这句出错。
//在数据库中Mode的属性是一个字节的char型 
// 如果我把数据库中Mode属性改为3个字节长度就可以写入
//但写入的该字符的ASCII码值,例如: 'a' -> 97

解决方案 »

  1.   

    在你的 _RecordsetPtr Open 的时候, 最后一个参数最好用 adCmdText
    这样, 你就可以写一条 insert 的 sql 语句把值插入到数据库表中了.
      

  2.   

    _RecordsetPtr Open 的时候, 最后一个参数就是 adCmdText
      

  3.   

    那在 Open 之后, 调用 _ConnectionPtr->Execute(sql, NULL, adCmdText) 来执行 sql 插入语句吧, 比如表为 abc , 字段有 theNo (数字), Mode (字符串), 则
    _ConnectionPtr pConn;
    // pConn 创建连接
    CString str = "a";
    _bstr_t sql = "insert into abc(theNo, Mode) values(123, '"+ str +"')";
    pConn->Execute(sql, NULL, adCmdText);
      

  4.   

    看来之能这样了
    难道用 _RecordsetPtr 就不能写单个字符?
      

  5.   

    adCmdText文本, 用单个字符不行吧
      

  6.   

    csting a;
    a="mode";
    record->PutCollect(a.sysallocstring(),vt);
    这样应该可以了吧。
    参数应该是一个variant变量的,不能直接用字符串的。
      

  7.   

    a.sysallocstring() ???
    CString 有这个成员吗?-----------------------------------------------------------------adCmdText文本, 用单个字符不行吧----------------------------
    那应该用什么呢?