在本文中,将探讨如何使用CDBF库来执行数据库表的基本操作,包括创建表结构、导航记录、修改记录以及执行查询和过滤。CDBF库支持多种数据库格式,如FoxPro、Visual FoxPro、dBASEIII至dBASE 5.x、Clipper和HiPer-SIx,同时支持memo字段。
要创建或更新表结构,可以使用以下函数:
CreateTable
ModifyTable
AddField
InsertField
ModifyField
MoveField
DeleteField
UpdateTable
如果要取消任何待处理的更新,可以调用函数CancelUpdateTable()
。
以下是一个创建表结构的示例:
try {
CDBFTableDef mNewTable;
// 开始创建
mNewTable.CreateTable(szFileName);
// 添加字段
FIELD_REC FieldRec;
memset(&FieldRec, 0, sizeof(FIELD_REC));
memcpy(FieldRec.field_name, szFieldName, 10);
FieldRec.field_type = FLD_TYPE_CHARACTER;
FieldRec.len_info.char_len = 20;
mNewTable.AddField(&FieldRec);
// ...
// 结束创建
mNewTable.UpdateTable();
} catch (CDBFException* e) {
e->ReportError();
e->Delete();
}
支持以下导航函数:
Move
MoveNext
MovePrev
MoveFirst
MoveLast
SetAbsolutePosition
还可以使用以下函数:
IsEOF()
IsBOF()
GetRecordCount()
GetAbsolutePosition()
以下是使用导航函数的示例:
try {
CDBFRecordset m_Set;
m_Set.Open("test.dbf");
while (!m_Set.IsEOF()) {
// ...
m_Set.MoveNext();
}
} catch (CDBFException* e) {
e->ReportError();
e->Delete();
}
用于添加、更改记录的函数有:
AddNew
Edit
SetFieldValue
Delete
Undelete
Update
还可以使用以下函数:
LockRecord()
UnlockRecord()
GetFieldValue()
以下是添加或编辑记录的示例:
try {
m_Set.Edit();
m_Set.SetFieldValue("Key", varKey);
m_Set.SetFieldValue("NAME", varName);
m_Set.SetFieldValue("PHONE", varPhone);
m_Set.Update();
} catch (CDBFException* e) {
e->ReportError();
e->Delete();
}
支持以下查找函数:
FindFirst
FindNext
FindLast
FindPrev
以下是使用查找函数的示例:
try {
BOOL bFind = m_Set.FindFirst("LIKE('*Club*', NAME)");
while (bFind) {
// ...
bFind = m_Set.FindNext();
}
} catch (CDBFException* e) {
e->ReportError();
e->Delete();
}
使用SetFilter
函数来设置过滤条件:
try {
m_Set.SetFilter("LIKE('*Club*', NAME)");
m_Set.Requery();
// ...
} catch (CDBFException* e) {
e->ReportError();
e->Delete();
}