fjptec-xm 发表于 2018-9-29 13:15:21

vc连接mysql数据库的方法

BOOL CAdoDatabase::Connect(CString csConnectStr)  
{
  
    HRESULT hr;
  
    try
  
    {
  
      hr = m_pConn.CreateInstance(__uuidof(Connection));
  
      //hr = m_pConn.CreateInstance("ADODB.Connection");
  
      //m_pConn->Open(_bstr_t(csConnectStr),"","",ADODB::adConnectUnspecified);
  
      m_pConn->Open(_bstr_t(csConnectStr),"","",adModeUnknown);
  
      return TRUE;
  
    }
  
    catch (_com_error e)
  
    {
  
      CString csErrorMsg;
  
      csErrorMsg.Format(_T("连接数据库出错:%s"),e.ErrorMessage());
  
      AfxMessageBox(csErrorMsg,MB_OK+MB_ICONERROR);
  
      return FALSE;
  
    }
  
}
  

  
BOOL CAdoDatabase::DisConn()
  
{
  
    if (m_pConn->State)
  
    {
  
      m_pConn->Close();
  
      m_pConn = NULL;
  
      return TRUE;
  
    }
  
    return FALSE;
  
}
  

  
BOOL CAdoDatabase::Execute(CString csSQL)
  
{
  
    try
  
    {
  
      _variant_t RecordsAffected;
  
      m_pConn->Execute((_bstr_t)csSQL,&RecordsAffected,adCmdText);
  
      return TRUE;
  
    }catch(_com_error e)
  
    {
  
      CString csMsg;
  
      csMsg.Format(_T("执行SQL语句出错:%s"),e.ErrorMessage());
  
      AfxMessageBox(csMsg,MB_OK+MB_ICONERROR);
  
      return FALSE;
  
    }
  
}
  

  

  
int CAdoDatabase::QueryDataForRecord(CString csSql, CStringArray &csa)
  
{
  
    try
  
    {
  
      m_pRecord.CreateInstance(__uuidof(Recordset));
  
      //m_pRecord->Open((_bstr_t)csSql,m_pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
  
      m_pRecord->Open((_bstr_t)csSql,_variant_t((IDispatch *)m_pConn, true),adOpenKeyset,adLockReadOnly,adCmdText);
  
      int nCount;
  
      int nRowCount = 0;
  
      nCount = m_pRecord->Fields->GetCount();
  
      _variant_t vt;
  
      while (!m_pRecord->adoEOF)
  
      {
  
            for (int i=0; iFields->GetItem(long(i))->GetValue();
  
                if (vt.vt == VT_NULL)
  
                {
  
                  vt = _T("");
  
                }
  
                csa.Add(vt);
  
            }
  
            nRowCount++;
  
            m_pRecord->MoveNext();
  
      }
  
      m_pRecord->Close();
  
      return nRowCount;
  
    }catch(_com_error e)
  
    {
  
      CString csMsg;
  
      csMsg.Format(_T("查询语句出错:%s"),e.ErrorMessage());
  
      AfxMessageBox(csMsg,MB_OK+MB_ICONERROR);
  
      return -1;
  
    }
  
}


页: [1]
查看完整版本: vc连接mysql数据库的方法