[MFC]ADO操作数据库

    技术2025-12-28  8

    建立连接我就不多说了,网上一堆.

     

    普通的INSERT/DELETE/SELECT等可以用查询语句实现,也很简单.

     

    记录一下数据库的修改.

     

    数据库里有多种类型的数据,这些数据在添加或者读取或者修改的时候都是不一样的.

     

    但是在数据库中全部统一为_variant_t类型.


    字符串的读取:

     

    读取出来的是BSTR类型,既不是ANSI也不是UNICODE,我查了好半天才知道,应该这么做(记得先查询)

     

    _com_util::ConvertBSTRToString((_bstr_t)pRecordset->GetCollect("xxxx"));

     

    得到的就是ANSI编码的字串.


    数据的更新:

     

    比如说我要更新一条数据的好几个信息,用查询语句也能够实现,但是不容易发现错误(如果失败的话),那么就先通过查询语句找到这一条数据,然后

     

    pRecordset->Fields->GetItem(_variant_t(_T("xxx")))->Value = _variant_t(新的值);//字符串

     

    SYSTEMTIME SysTime;TCHAR SqlCmd[MAX_PATH];GetLocalTime(&SysTime);wsprintf(SqlCmd, _T("%d-%d-%d"), SysTime.wYear, SysTime.wMonth, SysTime.wDay);pRecordset->Fields->GetItem(_variant_t(_T("xxx")))->Value = _variant_t(SqlCmd);//日期(貌似不能用now函数了)

     

    pRecordset->Fields->GetItem(_variant_t(_T("xxx")))->Value = _variant_t((short)1);//字节型数据

     

    _variant_t varDes;varDes.vt = VT_I4;varDes.ulVal = 100000;pRecordset->Fields->GetItem(_variant_t(_T("xxx")))->Value = varDes;//DWORD类型数据

     

    最后别忘了

    pRecordset->Update();pRecordset->Close();


    其实我也想过用VB来做,但是我感觉在效率上还是VC比较高,也是顺便学技术了.

    最新回复(0)