VC++连接Access

VC++连接Access

/*

*读取Access数据库中的数据

*/

void CMFCSQLDlg::OnButton1()

{

CoInitialize(NULL);

       _ConnectionPtr  m_pAppConn;

       HRESULT hResult;

 

     try

        {

                hResult = m_pAppConn.CreateInstance(("ADODB.Connection"));///创建Connection对象

                if(SUCCEEDED(hResult))

                {

                 m_pAppConn->Open("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source = .//DataBase//aa.mdb", "","",adModeUnknown);

                }

              _CommandPtr m_pCommand;

              _RecordsetPtr m_pRecordset;

              m_pCommand.CreateInstance("ADODB.Command");

 

              _variant_t vNULL;

              vNULL.vt = VT_ERROR;

              vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数

              m_pCommand->ActiveConnection = m_pAppConn;///非常关键的一句,将建立的连接赋值给它

              m_pCommand->CommandText = "SELECT * FROM myself";///命令字串

              m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集

 

              m_pRecordset->MoveFirst();

              for(;!m_pRecordset->adoEOF;m_pRecordset->MoveNext())

              {

                      // printf(m_pRecordset->GetCollect(("myage")));

                     _variant_t      var;

                     var = m_pRecordset->GetCollect(("myage"));

                     if(var.vt!=VT_NULL)

                     {

                       //printf((LPCTSTR)_bstr_t(var));

                       AfxMessageBox((LPCTSTR)_bstr_t(var));

                     }

              }

        }

 

        catch(_com_error e)///捕捉异常

        {

               // CString errormessage;

               // errormessage.Format(_T("连接数据库失败!/r/n错误信息:%s"),e.ErrorMessage());

                //AfxMessageBox(errormessage);

          //printf("Error:%s",e.ErrorMessage());

                AfxMessageBox(e.ErrorMessage());

                hResult = -1L;

        }

}

你可能感兴趣的:(VC++连接Access)