用odbc,需要下载mysql的odbc驱动程序。

解决方案 »

  1.   

    用ODBC不好
    应该从MYSQL自己带的APIS上入手
    但是具体不知道怎么做
      

  2.   

    用odbc吧,简单点,如想提高难度,同意hackerning的建议,但具体用数据库的函数,我
    只用过ORACLE自带的LIB
    所以,只能给你ODBC的方法
    a 定义一个CRECORDSET类
    b 添加所需传送的数据变量
    c 将m_nFields赋值为所想传送的数据变量的数量
    d 将函数改为
    void CCServiceLogInfo::DoFieldExchange(CFieldExchange* pFX)
    {
    //{{AFX_FIELD_MAP(CCServiceLogInfo)
    pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Text(pFX, _T("expertname"), m_EXPERTNAME);
    RFX_Text(pFX, _T("count(*)"), m_ClientNum);
    RFX_Text(pFX, _T("avg(nvl(enddate,sysdate)-startdate)"), m_AvgServieTime);
    RFX_Text(pFX, _T("sum(nvl(enddate,sysdate)-startdate)"), m_SumServieTime);
    //}}AFX_FIELD_MAP     //如没有enddate则定义系统时间
    }
    e 定义一个SQL语句
         CString strSql;
    strSql="select expertname,count(*),avg(nvl(enddate,sysdate)-startdate),";
    strSql=strSql+"sum(nvl(enddate,sysdate)-startdate)from tba_serviceloginfo";
    strSql=strSql+" group by expertname";
    strSql=strSql+" having expertname in";
    strSql=strSql+"(select expertname from tba_serviceloginfo where ";
    strSql=strSql+"STARTDATE>=to_date('"+m_EditColumn2+"','yyyy-mm-d:hh:mi')";
    strSql=strSql+" AND ENDDATE>=to_date('"+m_EditColumn3+"','yyyy-mm-dd'))";
    f 查询
    m_ServiceLogInfoDynst->Open(CRecordset::snapshot,strSql);
      

  3.   

    mysql有给vc用的客户库, 基于C或者C++的都有,
    你可以到www.mysql.com上去下载。