你好,我编了一个程序,是在VC中通过ODBC访问ACCESS2000数据库,其中需要把一个表的信息显示出来,结果发现每次刷新太慢,就想采用DAO来做(不知速度是否比较快),结果遇到了问题:听说Micorsoft Jet 4.0要操作ACCESS2000数据库,必须要添加相应语句,我根据网上搜索的信息,作了如下添加:
BOOL CZzglxtApp::InitInstance()
{
AFX_MANAGE_STATE(AfxGetModuleState());//添加
AfxGetModuleState()->m_dwVersion = 0x0601;//添加AfxEnableControlContainer();
}
结果编译出错,出错信息如下:
C:\Documents and Settings\Administrator\桌面\复件 zzglxtDAO\zzglxt.cpp(53) : error C2039: 'm_dwVersion' : is not a member of 'AFX_MODULE_STATE'
c:\program files\microsoft visual studio\vc98\mfc\include\afxstat_.h(191) : see declaration of 'AFX_MODULE_STATE'
请高手指点指点,不胜感谢!
顺便问一下怎么可知数据库采用的是什么样的数据引擎,怎样用CDaoDatabase创建对象连接数据库,我这样对吗?
CDaoDatabase db;
db.Open("C:\\zzglxt.mdb",FALSE,FALSE,"");

解决方案 »

  1.   

    http://support.microsoft.com/default.aspx?scid=kb;en-us;236991
    Q236991 Unrecognized Database Format Error with Access 2000 Database
      

  2.   

    用ADO比较简单,速度也快,只是要注意一下版本的问题。
      

  3.   

    ACCESS 2000    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"","",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }sql server
    1.stdafx.h中加入
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 
    2。app文件的InitInstance中加入
    if(S_OK!=OleInitialize(NULL))
    {
    AfxMessageBox("初始化COM组件库错误");
    }
    下面就是数据库操作
    _ConnectionPtr pConn;
    _RecordsetPtr  pRs;
    CString strSQL;
    pConn.CreateInstance(__uuidof(Connection));
    pConn->CursorLocation=adUseClient;
    strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
    pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
    pRs->CursorLocation=adUseClient;
    pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
    pRs1->CursorLocation=adUseClient;
    pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
    pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);