访问数据库
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);
}