1223

解决方案 »

  1.   

    #include "stdio.h"
    #import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
    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);//此处的RecordsAffected= -1,因为只有执行updates, deletes, or inserts rows才能用
      //该指令读取受影响的行
      pRst = pConn->Execute(_bstr_t("select * from 家庭成员"), RecordsAffected, adCmdText);
      FieldsPtr fds1=pRst->GetFields();
      printf("printf field name of the table\n");
      for(int i = 0;i < fds1->GetCount(); i++)
      {
       FieldPtr fd = fds1->GetItem(_variant_t(short(i)));
       printf("%s ",(LPCTSTR)fd->GetName());  }
      printf("\n");
     
      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 ();
      }
      pRst->Close();
      pConn->Close();
     }
     catch (_com_error &e)
     {
      printf("Description = '%s' ,%d,'%s'\n", (char*) e.Description(),e.WCode,e.ErrorMessage());
     }
     ::CoUninitialize();
     return 0;
    }
      

  2.   

    是要例子麽?
    HRESULT hr;
    TCHAR pBuffer[1024];
    _ConnectionPtr Conn;
    _RecordsetPtr pRecordset;
    _variant_t value;
    try
    {
    hr = Conn.CreateInstance(__uuidof(Connection));
    if(SUCCEEDED(hr))
    {
    sprintf(pBuffer,"Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Pubs;Data Source=(Local)");
    hr = Conn->Open(pBuffer,"","",-1);
    if(SUCCEEDED(hr))
    {
    hr = pRecordset.CreateInstance(__uuidof(Recordset));
    if(SUCCEEDED(hr))
    {
    sprintf(pBuffer,"SELECT * FROM TITLES ORDER BY pub_id");
    hr = pRecordset->Open(_variant_t(pBuffer),Conn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
    if(SUCCEEDED(hr))
    {
    if(pRecordset->adoEOF)
    MessageBox("adoEOF");
    int i = 0;
    while((!pRecordset->adoEOF))
    {
    for(int j = 0;j<pRecordset->Fields->GetCount();j++)
    {
    _variant_t vIndex((long)j);
    value = pRecordset->GetCollect(vIndex);
    if(CrackStrVariant(value,pBuffer,1024))
    if( j==0 )
    m_ListCtl.InsertItem(i,pBuffer,0);
    else
    m_ListCtl.SetItemText(i,j,pBuffer);
    }
    i++;
    hr = pRecordset->MoveNext();
    if(SUCCEEDED(hr));
    else
    {
    pRecordset->Close();
    return;
    }
    }
    pRecordset->Close();
    }
    else
    {
    pRecordset->Close();
    return;
    }
    }
    else
    {
    return;
    }
    }
    else
    {
    return;
    }
    }
    else
    {
    return;
    }
    }catch(...)
    {
    MessageBox("Error Occur:Can Not Determin");
    return;
    }
    Conn->Close();
      

  3.   

    在msdn的VC的ado的例子有很多!
      

  4.   

    谁能给我一个Oracle的例子?我都连不上,快疯了,,,
      

  5.   

    "Provider=MSDAORA;Data Source=serverName;User ID=userName; Password=userPassword;"
      

  6.   

    _RecordsetPtr  pRst("ADODB.Recordset");
      pConn->Open("PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=..\\addrbook.mdb;UID=;PWD=;"
      ,"","",adConnectUnspecified);pRst.Find("ID=1 and age=25");//何处有错?msdn说Find的参数的不包含where的where子句。
    "ID=1 and age=25"难道不符合where子句的格式?
    对不起!我刚学.