• 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;
    }
       
     
  • 相关阅读:
    delete
    What's an Aggregate Root?
    Mediator Pattern中介者模式
    Domain events: design and implementation
    "ISerializable" should be implemented correctly
    Package version is always 1.0.0 with dotnet pack
    CA1005: Avoid excessive parameters on generic types
    Event Sourcing pattern
    Command and Query Responsibility Segregation (CQRS) pattern
    Implementing event-based communication between microservices (integration events)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6471244.html
Copyright © 2020-2023  润新知