请问vc中能否不创建数据源就连接数据库呀?象vb那样

解决方案 »

  1.   

    怎么做呢
    是继承一个CRecordSet么?
      

  2.   

    #import <msado15.dll> no_namespace no_implementation_ConnectionPtr spConn;
    _CommandPtr    spCmd;
    _RecordsetPtr  spRs;
      

  3.   

    int main(int argc, char* argv[])
    {
     printf("Use ADO to open ..\\addrbook.mdb database file!\n");
     CoInitialize(NULL);
     try
     {
      _ConnectionPtr pConn("ADODB.Connection");
      _RecordsetPtr  pRst("ADODB.Recordset");
      pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;"
      ,"","",adConnectUnspecified);
      pRst->Open("家庭成员", _variant_t((IDispatch *) pConn, true),
      adOpenStatic, adLockPessimistic, adCmdTable);
      FieldsPtr fds=pRst->GetFields();
      printf("printf field name of the table\n");
      for(int i = 0;i < fds->GetCount(); i++)
      {
       FieldPtr fd = fds->GetItem(_variant_t(short(i)));
       printf("%s ",(LPCTSTR)fd->GetName());  }
      printf("\n");
      pRst->MoveFirst ();
      for(i = 0;i < pRst->GetRecordCount() ; i++)
      {
       printf("Record is '%s %s %s'\n", 
                (char*) ((_bstr_t) pRst->GetFields()->GetItem("姓氏")->GetValue()),
                (char*) ((_bstr_t) pRst->Fields->Item["名字"]->Value),
       (char*) ((_bstr_t) pRst->Fields->Item["角色"]->Value));
       pRst->MoveNext ();
      }
      

  4.   

    _ConnectPtr cn;
    CString strSql;
    strSql = "{DRIVER={SQL SERVER};SERVER=myserver;SA=sa;PWD=pwd;DATABASE=mydb";
    cn.open((_bstr_t)strSql,"","",0);
      

  5.   

    使用datalink,msdn中的dbviewer和dbfetch都是这样的例子,也就是动态打开数据库,这是可以的!