iCAx开思网

标题: CAA与数据库的连接问题,向各位高手请教! [打印本页]

作者: cslm2007    时间: 2007-11-26 15:14
标题: CAA与数据库的连接问题,向各位高手请教!
用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();

问题:编译没有问题,运行时产生错误,请高手指导!不胜感激!
作者: cslm2007    时间: 2007-11-29 10:33
已解决,谢谢
作者: lemonfuture    时间: 2008-1-2 18:05
请问可否发给我你的源代码,我也一直对这个问题很困惑。

非常感谢!

我的邮箱是:lemonfuture@163.com
作者: whoami325    时间: 2008-2-19 21:35
我的是wangmeng@me.buaa.edu.cn,楼主能否再多给点信息和方法,我也再学这方面的东西,现在头都大了




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3