马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
x
用CDataBase可以实现数据库的连接,但是用CRecordSet派生类来实现连接运行的时候不行,我采用
的是在MFC appwizard中创建CRecordSet的派生类,然后将该类的头文件和cpp文件添加到CAA工程
环境中,并在头文件中添加afxdb.h头文件。
1、头文件如下:
#include <afxdb.h>
class CCutDBSet : public CRecordset
{
public:
CCutDBSet(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CCutDBSet)
// Field/Param Data
//{{AFX_FIELD(CCutDBSet, CRecordset)
CString m_cutid;
CString m_cuttype;
//}}AFX_FIELD
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CCutDBSet)
public:
virtual CString GetDefaultConnect(); // Default connection string
virtual CString GetDefaultSQL(); // Default SQL for Recordset
virtual void DoFieldExchange(CFieldExchange* pFX); // RFX support
//}}AFX_VIRTUAL
// Implementation
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
};
2、cpp 文件:
IMPLEMENT_DYNAMIC(CCutDBSet, CRecordset)
CCutDBSet::CCutDBSet(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CCutDBSet)
m_cutid = _T("");
m_cuttype = _T("");
m_nFields = 2;
//}}AFX_FIELD_INIT
m_nDefaultType = dynaset;
}
CString CCutDBSet::GetDefaultConnect()
{
return _T("ODBC;DSN=cutDataBase");
}
CString CCutDBSet::GetDefaultSQL()
{
return _T("[cutPara]");
}
void CCutDBSet:oFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CCutDBSet)
pFX->SetFieldType(CFieldExchange:utputColumn);
RFX_Text(pFX, _T("[cutid]"), m_cutid);
RFX_Text(pFX, _T("[cuttype]"), m_cuttype);
//}}AFX_FIELD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CCutDBSet diagnostics
#ifdef _DEBUG
void CCutDBSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CCutDBSet:ump(CDumpContext& dc) const
{
CRecordset:ump(dc);
}
#endif //_DEBUG
3、在其他地方调用
m_pSet = new CCutDBSet(NULL);
m_pSet->m_strFilter="[cut].[cutid]";
m_pSet->Open();
问题:编译没有问题,运行时产生错误,请高手指导!不胜感激! |