用c++读取数据库时,有2个思路,其一是使用ODBC等驱动来写程序,其二是以文件流的形式打开任何一个dbf,然后按照dbf公布的格式标准来写自己的读取函数。后者网上有人公布了格式规范,csdn坛子里也有人发言说写过,小人不才,捣鼓了几天,用前者搞定了此问题。
我写成的是MFC程序,可是既然是写日志,就没必要弄得那么复杂,就发核心的部分吧,不是很难。需要程序的可以给我email。在运行程序之前,记得安装好ODBCVFP.MSI以及注册好msado15.dll。这些细节会直接影响到你的结果的,当时我在这卡了很久很久。
废话少说,切入正题。
1、连接VFP数据库(其实就是制定某个DBF,然后OPEN)
::CoInitialize(NULL);
try
{
::HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
CString strPath;
TCHAR szCurrentDir[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,szCurrentDir);
strPath.Format(_T(“%s”), szCurrentDir);
_bstr_t strConnect =_T(“Driver={Microsoft FoxPro VFP Driver (*.dbf)};sourcedb=C://Temp;sourcetype=DBF;exclusive=No;backgroundfetch=Yes;collate=Machine”);
m_pConnection->Open(strCon