问题1:
m_pCommand.CreateInstance("ADODB.Command");
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND; //定义为无参数
m_pCommand->ActiveConnection = m_pConnection; //将建立的连接赋值给它
m_pCommand->CommandText = "OperationLog_userl";
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdProc); ///执行命令在最后一句报错,error C2065: 'adCmdProc' : undeclared identifier ?
太稀奇了……问题2:
一个连接字符串:
_bstr_t bstr = "Select UserL.id, UserL.user, OperationLog.id, OperationLog.time, OperationLog.type, OperationLog.data FROM UserL, OperationLog WHERE UserL.id = 2";
在调试时发现,where以后的字符就莫名其妙地消失了,莫非_bstr_t还有长度限制不成?

解决方案 »

  1.   

    问题1:
    m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdProc);///执行命令
    里面的adCmdProc是在哪里定义的呢?编译器提示没定义
      

  2.   

    问题2:
    在调试时发现,where以后的字符就莫名其妙地消失了,莫非_bstr_t还有长度限制不成?没发现长度的限制,你用bstr.length();看一下长度!
      

  3.   

    问题1中的adCmdProc本身就是options参数中的一个枚举值啊,应该是不需要定义的才对啊。
      

  4.   

    当你使用Recordset  对象时,Recordset并不认得rs(表名称.字段名称)格式,即rs(“ UserL.id”)会发生错误,您必须使用AS来设定字段名称的别名,如:
    "Select UserL.id AS u_id, UserL.user AS u_user, OperationLog.id AS o_id, OperationLog.time AS o_time, OperationLog.type AS o_type, OperationLog.data  AS o_data FROM UserL, OperationLog WHERE UserL.id = 2";
      

  5.   

    (1)需要导入一些库,具体可见:http://www.18007.com/info/5217.html
      

  6.   

    回 handwolf(狼之友!) 的话,正如您所想的,bstr其实并没有长度限制,只是在调试时,watch窗口有一定的限制。
    呵呵,hxfhxf真厉害,把偶真正想解决的问题就说出来了不过偶还是不明白adCmdProc咋就未定义喃,偶之前用的adCmdText一直不也没定义吗?