vc 编程访问mysql_VC编程之vc连接mysql数据库的方法

本文主要向大家介绍了VC编程之vc连接mysql数据库的方法,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

892064aed03aa03d177e1d33ea6088d1.png

前段时间项目中用的是mysql数据库,它的连接方法有二种,一种是数据库自带的API,还有一种就用ADO连接了。

由于本次项目用的mysql数据库只是暂时的,后期可能会更改为MSSQL,所以如果用mysql自带的API连接移植性不好,所以改为ADO的,到时只要修改下字符串连接值就行了。

其实ADO连接的底层也是调用的ODBC驱动去连接,所以需要去下载个数据库对应的ODBC驱动,别人说秘本需要对应,要不然连接不上,我没有做太多测试,自己用的6.0版本,所以去官网下载了个mysql-connector-odbc-5.3.4-winx64版本的,然后对应的字符串为:driver={MySQL ODBC 5.3 ANSI Driver};Server=localhost;DATABASE=*;USER=*;PASSWORD=*;OPTION=3;

实测是可以连接成功的。

下面放出自己写的一个超级简单的类:#pragma once#import no_namespace rename("EOF", "adoEOF")// #import "msado15.DLL"   rename_namespace("ADOWE") rename("EOF","adoEOF")  // using namespace ADOWE;class CAdoDatabase{public:    CAdoDatabase(void);public:    ~CAdoDatabase(void);public:    //BOOL Connect(CString csConnectStr,CString csUser,CString csPasswd);    //连接    BOOL Connect(CString csConnectStr);    //断开连接    BOOL DisConn();    //执行语句    BOOL Execute(CString csSQL);    //是否连接    BOOL IsConn();    //返回结果的行数    int  QueryDataForRecord(CString csSql,CStringArray& csa);private:    _ConnectionPtr m_pConn;    _RecordsetPtr  m_pRecord;};

实现: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;    }}

此代码运行平台为WIN7,我把它放到XP上运行时,提示无效指针,网上查了下是平台兼容性的问题,换到其它WIN7电脑上可成功运行。

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值