访问数据库

 

1本数据库生成的文件是与“Foxpro 2.6”完全兼容目前不支持“备注”字段)的DBF库,具备DOS版本和WINDOWS版本。

2头文件是Foxpro.h”,其接口主要是

     //建立一数据库

     BOOL  CreateFoxpro(char*pStr);

    //打开数据库

     BOOL  OpenFoxpro(char*pStr);

    //关闭数据库

     BOOL  CloseFoxpro();

    //增加域

     BOOL  AddFields(char* strName,BYTE byStyle,int nLength,int nDot);

    //得到某域的属性

     FOXPRO_FIELDS*  GetFoxproFields(int nIndex);

    //得到域的个数

     int   GetFieldsCount()

    //得到纪录条数

     long  GetRecordCount() {return(m_FoxproHead.dwRecordCount);}

    //写入数据

     BOOL  SetFieldsString(int nIndex,char* pStr);//写字符串变量

     BOOL  SetFieldsNumber(int nIndex,float fValue);//写数字变量

     BOOL  SetFieldsDate(int nIndex,int nYear,int nMonth,int nDay);//写日期变量

     BOOL  SetFieldsLogic(int nIndex,BOOL bLogic);//写逻辑变量

     BOOL  SetFieldsMemo(int nIndex,char* pStr);写备注字段(目前是不管写什么都是空)

    //读取数据

     BOOL  GetFieldsString(int nIndex,char* pStr); //写字符串变量

     float GetFieldsNumber(int nIndex); //写数字变量

     BOOL  GetFieldsDate(int nIndex,int* pnYear,int* pnMonth,int* pnDay); //写日期变量

     BOOL  GetFieldsLogic(int nIndex); //写逻辑变量

     BOOL  GetFieldsMemo(int nIndex,char* pStr); 写备注字段(目前读的数据是空)

    //定位纪录

     BOOL  Seek(int nIndex,int nMode);

    //数据库是否已经打开

     BOOL  IsOpen();

    //将未存盘的纪录存入磁盘

     BOOL  Flush();

    //增加一新纪录

     BOOL  AddNew();

    //更新纪录缓冲区

     BOOL  Edit();

    //将当前纪录修改生效

     BOOL  Update();

    //插入一条纪录到当前纪录后

     BOOL  Insert();

    //删除纪录

     BOOL  Delete();

    //不可恢复删除纪录

     BOOL  DeleteEx();

    //将纪录中的“已打上删除标记”的所有纪录删除

     BOOL  Zap();

 

3举例如下

 

//建立一新数据库

BOOL  BuildArmatureDbf(char* pStr)

{

     char buf[50];

    //分配一个数据库对象

     CFoxpro  mFoxpro;

    //建立并打开新数据库

     if (!mFoxpro.CreateFoxpro(pStr))

{

return(FALSE);

}

    //建立各域

     mFoxpro.AddFields("ModelName" ,'C',24,0);//字符类型,最大24字节,0小数点(字符当然没有小数点的概念!)

     mFoxpro.AddFields("Date"      ,'D',10,0);//日期,10字节长度(必须是这个值),0小数点(日期当然没有小数点的概念!)

     mFoxpro.AddFields("Line"      ,'N', 9,0);

     mFoxpro.AddFields("Bar"       ,'N', 2,0);

     mFoxpro.AddFields("Hipot1"    ,'N',5,3);

     mFoxpro.AddFields("Hipot2"    ,'N',5,3);

     mFoxpro.AddFields("Hipot3"    ,'N',5,3);

     mFoxpro.AddFields("Insulation",'N',4,0);

    //关闭数据库

     mFoxpro.CloseFoxpro();

     return(TRUE);

}

//写纪录

BOOL  WriteMapFile()

{

    CFoxpro mFoxpro;

if (!mFoxpro.OpenFoxpro("MyName.Dbf"))

     {

        return(FALSE);

    }

     //建立新纪录

     mFoxpro.AddNew();

     mFoxpro.Edit();

 

     //写入型号

     mFoxpro.SetFieldsString(0, "COIN-003");

     //写入日期

     mFoxpro.SetFieldsDate(1,2004,10,30);

     //写入一整数

     mFoxpro.SetFieldsNumber(2,3275);

     //写入一整数

     mFoxpro.SetFieldsNumber(3,24);

    //更新新效

     mFoxpro.Update();

 

    //关闭文件

     mFoxpro.Flush();

    mFoxpro.CloseFoxpro();

     return(TRUE);

}