WEB开发网
开发学院软件开发VC 介绍一个增强的数据库类CDataSet 阅读

介绍一个增强的数据库类CDataSet

 2008-02-26 20:26:33 来源:WEB开发网   
核心提示:CMyException是一个简单的异常处理类,如果运行出错,介绍一个增强的数据库类CDataSet(2),通过这个类来丢出异常,并显示指定的错误信息,要创建一个系统数据源“Test”(MS Access Driver),指向Test.mdb,运行DbTest.exe,以下使这个类的定义和实现:

CMyException是一个简单的异常处理类,如果运行出错,通过这个类来丢出异常,并显示指定的错误信息。以下使这个类的定义和实现:

class CMyException: public CException {
  CString m_ErrorMsg;
public:
  CMyException(int ErrMsgResourceID);
  CMyException(CString ErrMsg);
  BOOL GetErrorMessage(LPTSTR lpszError,?
            UINT nMaxError,
            PUINT pnHelpContext = NULL);
};
CMyException::CMyException(int ResourceID)
{
  m_ErrorMsg.LoadString(ResourceID);
}
CMyException::CMyException(CString ErrorMsg)
{
  m_ErrorMsg = ErrorMsg;
}
BOOL CMyException::GetErrorMessage(LPTSTR lpszError,
                  UINT nMaxError,
                  PUINT)
{
  strncpy(lpszError, (LPCSTR)m_ErrorMsg, nMaxError);
  return TRUE;
}

在使用CDataSet类的应用程序中,对象可以被实例化如下: CDataset<DataObj, 4> MySet("Table1", &db);这里“Table1”是数据库表的名字,“&db”指向一个打开的数据库,在大多数情况下(尤其是当使用事务处理时),实例创建数据库对象并且在打开记录机之前从外部打开数据库。您是否注意到在Listing 2 的代码中有一件事情没有做?,对每一个数据类而言必须要单独实现DoFieldExchange()来建立一个数据对象成员和数据库字段之间的联接,Listing 3 中的代码告诉您如何为DataObj实现DoFieldExchange()。 数据对象的 DoFieldExchange() 方法
void CDataSet<DataObj, 4>::DoFieldExchange(CFieldExchange* pFX)
{
  pFX->SetFieldType(CFieldExchange::outputColumn);
  RFX_Text(pFX, "VAR1", m_Data.Var1);
  RFX_Text(pFX, "VAR2", m_Data.Var2);
  RFX_Int(pFX, "VAR3", m_Data.Var3);
  RFX_Single(pFX, "VAR4", m_Data.Var4);
}
以下是使用CDataSet的一个例子: CDatabase db;
CArray<DataObj, DataObj> A;
TRY {
  db.Open("TEST");
   
  // Create recordset object
  CDataSet<DataObj, 4> MySet("Table1", &db);
  // Set default filter to var1
  MySet.m_DefaultFilter = "Var1 = ''%s''";
  MySet.Open();
  // Load all of the records
  MySet.LoadAll(A);
  // Find some record
  if ( MySet.Search("Anything") )
  {
   DataObj B;
   // Load, update, and store new record
   MySet.Load(B);
   B.Var1 = "Anything else?";
   MySet.Store(B);
  }
  MySet.Close();
  AfxMessageBox("Data is loaded!");
}
CATCH_ALL(e) {
  e->ReportError();
}
END_CATCH_ALL

为了测试例子,要创建一个系统数据源“Test”(MS Access Driver),指向Test.mdb,运行DbTest.exe,在菜单中选择 Test =〉DataSet。

上一页  1 2 

Tags:介绍 一个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接