VC编程实现创建dbf文件

                                                                                          朱金灿
 
         前言: dbf文件是一种著名的数据库文件,其特点是可以记录单个数据表的数据。Maozefa大侠曾经写过两篇文章论述如何操作dbf文件:《C++老代码 -- DBF数据文件操作类DBFile》(http://blog.csdn.net/maozefa/archive/2007/09/16/1787074.aspx)和C语言版的DBF本地数据库文件操作函数(http://blog.csdn.net/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文件的代码:
_ConnectionPtr m_pConn;    // 连接数据库接口
CString strSRC; // strSRC为数据库连接字符串

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

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

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


//  上面用到的GetVFFreeTableSRCString函数代码如下:
CString GetVFFreeTableSRCString(CString strFolderName)
{
    CString strSRC;
    strSRC
="Provider=MSDASQL.1;DRIVER=Microsoft Visual FoxPro Driver;";
    strSRC
+="SourceType=DBF;";
    strSRC
+="SourceDB=";
    strSRC
+=strFolderName;
    strSRC
+="/";
    strSRC
+=";UID=SA;PWD=";
    
return strSRC;
}
   
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值