VC编程实现创建dbf文件

本文介绍了一种通过先创建空DBF文件再利用ADO进行数据操作的方法,解决了直接创建DBF文件时遇到的问题,并提供了具体的实现步骤及代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

朱金灿
前言:dbf文件是一种著名的数据库文件,其特点是可以记录单个数据表的数据。Maozefa大侠曾经写过两篇文章论述如何操作dbf文件:《C++老代码 -- DBF数据文件操作类DBFile》(http://blog.youkuaiyun.com/maozefa/archive/2007/09/16/1787074.aspx)和C语言版的DBF本地数据库文件操作函数(http://blog.youkuaiyun.com/maozefa/archive/2008/01/11/2034688.aspx)。首先非常感谢Maozefa大侠把他的成果无私奉献出来。同时我也看到其中一些不足之处。一是代码的不兼容性,比如在《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创建一个空的dbf文件,取名为:table1.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;//strSRC为数据库连接字符串

if(FAILED(m_pConn.CreateInstance("ADODB.Connection")))...{
AfxMessageBox(
"创建连接对象失败!");
returnFALSE;
}

//获得连接字符串,csPath为dbf文件所在的文件夹
strSRC=GetVFFreeTableSRCString(csPath);
_bstr_tbstrSRC(strSRC);
//把连接字符串转换为接口识别格式*

if(FAILED(m_pConn->Open(bstrSRC,"","",-1)))...{
AfxMessageBox(
"打开数据库失败!");
returnFALSE;
}


//上面用到的GetVFFreeTableSRCString函数代码如下:
CStringGetVFFreeTableSRCString(CStringstrFolderName)
...{
CStringstrSRC;
strSRC
="Provider=MSDASQL.1;DRIVER=MicrosoftVisualFoxProDriver;";
strSRC
+="SourceType=DBF;";
strSRC
+="SourceDB=";
strSRC
+=strFolderName;
strSRC
+="/";
strSRC
+=";UID=SA;PWD=";
returnstrSRC;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值