如何创建vcb文件,如何创建dbf文件
Dbf文件是著名的数据库文件,可以记录单个数据表的数据。毛泽发写过两篇关于如何操作dbf文件的文章:《C++老代码 -- DBF数据文件操作类DBFile》(http://blog . . net/maozefa/archive/2007/09/16/1787074 . aspx)和C语言版DBF本地数据库文件操作函数(http://blog . . net/maozefa/archive/2008/01/11/2034688 . aspx)。首先感谢毛泽法大师的无私奉献。同时,我也看到了一些不足。第一,代码不兼容。比如《C++老代码 -- DBF数据文件操作类DBFile》中的代码是在Borland C 3.1编译器下编译的,很难移植到VS环境中。其次,需要测试创建的dbf文件的标准。我曾经把《C++老代码 -- DBF数据文件操作类DBFile》的代码移植到VC 6.0,成功创建了dbf文件。但是我用Microsoft Visual Foxpro 6.0打开的时候,只能看到字段名,看不到数据(可能这涉及到dbf文件的版本)。基于此,我想到了另一种操作dbf文件的方法(有点投机取巧,别送我砖头!呵呵)。
我看到dbf文件结构实际上相当复杂。我觉得直接创造出来肯定很难。你能想出别的办法吗?我的想法是:先创建一个空的dbf文件,然后连接ado进行修改,从而达到创建dbf文件的目的。具体步骤如下:
1.使用Microsoft Visual Foxpro 6.0创建一个名为table1的空dbf文件。DBF有一个名为field1的字段,把这个文件放在exe文件的输出文件下,比如VS项目的debug文件夹下。
2.使用Windows API函数:GetModuleFileName获取exe文件输出路径,然后获取table1.dbf的路径
3.使用ado连接table1.dbf连接成功后,可以操作dbf文件,比如修改字段,插入记录等等。
在用ado连接dbf文件之前,还可以使用Windows API函数来复制和重命名dbf文件。
//附上ado连接dbf文件的代码:
_ ConnectionPtrm _ pConn//连接到数据库接口
CStringstrSRC//strrc是数据库连接字符串
if(失败(m_pConn。CreateInstance(ADODB。连接)))).{
AfxMessageBox(未能创建连接对象!);
返回false;
}
//获取连接字符串,csPath是dbf文件所在的文件夹
str src=GetVFFreeTableSRCString(cs path);
_ bstr _ tbstrSRC(strSRC);//将连接字符串转换为接口识别格式*
if(失败(m_pConn- Open(bstrSRC,,,-1))).{
AfxMessageBox(未能打开数据库!);
返回false;
}
//上面使用的GetVFFreeTableSRCString函数代码如下:
CStringGetVFFreeTableSRCString(CStringstrFolderName)
.{
CStringstrSRC
str RC= Provider=msdas QL . 1;DRIVER=Microsoft visual foxprodriver;;
strrc= source type=DBF;;
strSRC= SourceDB=
strSRC=strFolderName
strrc=/;
str RC=;UID=SAPWD=;
returnstrSRC
}