我是新手,请问ADO Recordset的OPEN()函数的第一个参数是什么?比如下面的代码:
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM users",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);为什么这里用一个查询语句,而不直接用表名,改成m_pRecordset->Open("users",_variant_t((IDispatch*)为什么不可以?不是说第一个参数可以用表名吗?谢谢

解决方案 »

  1.   

    你的Connection的连接串属性是什么?
    或者说,你是以什么方式打开连接的?
    或者说,你用的什么驱动方式?
    oledb连接不支持使用表名. odbc可以.
    比如
    oledb
    Provider=SQLOLEDB;Server=(local);uid=sa;pwd=x;database=test;
    odbc
    Driver={SQL Server};Server=(local);uid=sa;pwd=x;database=test;
      

  2.   

    用的Oracle Provider for OLE DB,连接字符串是
    hr = m_pConnection->Open("Provider=OraOLEDB.Oracle;Data Source=XXXX;User ID=XXXX;Password=XXXX;","","",adModeUnknown);
    如果只能使用查询语句做参数,那是不是意味着每次连接都要使用一次查询,如果记录很多,而且频繁调用这个语句会不会影响性能?谢谢
      

  3.   

    1,不会.
    用表名,或是用查询语句,只要recordset对象是重新打开,都会重建记录集.
    2,oracle可以试试
    "Driver={microsoft odbc for oracle};server=ip;uid=xx;pwd=xx;"