怎么用C++访问MySQL数据库

如何用C++访问MySQL数据库
如题,我想知道用ADO怎么访问啊,有没有源代码呀,不用ADO的话用别的怎么访问啊

------解决方案--------------------
参考:
http://blog.****.net/tukidrmyd/archive/2009/09/05/4522152.aspx

应该可以解决你的问题。
------解决方案--------------------
一般是ado,比较方便,不管什么数据库,只是连接的时候参数不同而已
------解决方案--------------------
或者用odbc访问数据库
------解决方案--------------------
上MYSQL的官网,里面有很的API函数可以使用,
------解决方案--------------------
晕》 ADO是什么呀? 瞎解释 


用mysql提供api呀
------解决方案--------------------
http://www.hudong.com/wiki/ADO
这篇文章讲了些基本的。
------解决方案--------------------


看我的博客吧,满足你所有要求:
MYSQL C API 访问程序(更新升级版本) 

http://blog.****.net/hzhxxx/archive/2010/12/27/6100752.aspx
------解决方案--------------------
我现在做得就是MySQL C API的封装!
------解决方案--------------------
C/C++ code

//ADO.h
#pragma once
#include <string>

using namespace std;
#import "msado15.dll" no_namespace rename("EOF", "adoEOF")


class CADO
{
public:
    CADO(void);
public:
    virtual ~CADO(void);
public:    //属性
    _ConnectionPtr m_pConnection;                    //连接对象指针
    _RecordsetPtr m_pRecordset;                      //记录集对象指针
public:    //函数
    bool OnInitAdoConn(wstring strConnect);            //连接数据库
    _RecordsetPtr &OpenRecordset(wstring sql);        //打开记录集
    void CloseRecordset();                            //关闭数据集
    void CloseConn();                                //关闭数据库连接
    int GetRecordCount(_RecordsetPtr pRecordset);    //获取记录数
};





//ADO.cpp
#include "StdAfx.h"
#include "ADO.h"

CADO::CADO(void):m_pConnection(NULL), m_pRecordset(NULL)
{
}

CADO::~CADO(void)
{
}

bool CADO::OnInitAdoConn(wstring strConnect)
{
    try
    {
        ::CoInitialize(NULL);
        m_pConnection.CreateInstance(__uuidof(Connection));
        m_pConnection->Open(_bstr_t(strConnect.c_str()), _bstr_t(""), _bstr_t(""), adModeUnknown);
        return true;

    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
    }
    return false;
}

void CADO::CloseConn()
{
    m_pConnection->Close();
    ::CoUninitialize();
}

_RecordsetPtr &CADO::OpenRecordset(wstring sql)
{
    try
    {
        m_pRecordset.CreateInstance(__uuidof(Recordset));
        m_pRecordset->Open(_bstr_t(sql.c_str()), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
    }
    return m_pRecordset;
}

int CADO::GetRecordCount(_RecordsetPtr pRecordset)
{
    try
    {
        int iCount = 0;
        if(m_pRecordset->adoEOF)
        {
            return 0;
        }
        while(m_pRecordset->adoEOF)
        {
            iCount++;
            m_pRecordset->MoveNext();
        }
        m_pRecordset->MoveFirst();
        return iCount;
    }
    catch(_com_error e)
    {
        AfxMessageBox(e.Description());
        return -1;
    }
}

void CADO::CloseRecordset()
{
    if(m_pRecordset->GetState() == adStateOpen)
    {
        m_pRecordset->Close();
    }
}