- UID
 - 34598
 
- 积分
 - 0
 
- 精华
 
- 贡献
 -  
 
- 威望
 -  
 
- 活跃度
 -  
 
- D豆
 -  
 
- 在线时间
 -  小时
 
- 注册时间
 - 2003-3-10
 
- 最后登录
 - 1970-1-1
 
 
 
 
 
 
 | 
 
 楼主 |
发表于 2003-4-15 11:45:39
|
显示全部楼层
 
 
 
我的原代码: 
 
 
BOOL MyMfc::OnInitDialog()  
{ 
        SetDialogName("MyMfcSample:MyMfc");          
 
        CAcUiDialog::OnInitDialog();     
 
        // 初始化COM,创建ADO连接等操作  
        AfxOleInit();  
 
        _ConnectionPtr        m_pConnection; 
        _RecordsetPtr        m_pRecordset;     
 
        CString strErrorMessage; 
        HRESULT hr; 
 
        try                  
        {          
                hr = m_pConnection.CreateInstance("ADODB.Connection"); 
                if (SUCCEEDED(hr)) 
                { 
                        hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ValueDb.mdb","","",adModeUnknown);///连接数据库 
                } 
        } 
 
        catch(_com_error e) 
        { 
                strErrorMessage.Format("连接数据库失败,确认数据库 ValueDb.mdb 是否在当前路径下!\r\n错误信息:%s",e.ErrorMessage()); 
                AfxMessageBox(strErrorMessage);///显示错误信息 
                return false; 
        } 
         
        // 使用ADO创建数据库记录集 
        try 
        { 
                hr = m_pRecordset.CreateInstance("ADODB.Recordset");  
        } 
 
        catch(_com_error e) 
        { 
                strErrorMessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage()); 
                AfxMessageBox(strErrorMessage);///显示错误信息 
                return false; 
        } 
 
        try 
        { 
                m_pRecordset->Open("SELECT * FROM Values", m_pConnection.GetInterfacePtr(), adOpenStatic,adLockOptimistic,adCmdText);  
        } 
 
        catch(_com_error e) 
        { 
                strErrorMessage.Format("读取数据库记录失败!\r\n错误信息:%s",e.ErrorMessage()); 
                AfxMessageBox(strErrorMessage);///显示错误信息 
                return false; 
        } 
 
         
        _variant_t var; 
        CString strName,strValues; 
 
        // 清空列表框 
        m_AccessList.ResetContent(); 
        strName=strValues="";  
 
        try 
        { 
                if(!m_pRecordset->BOF) 
                        m_pRecordset->MoveFirst(); 
                else 
                { 
                        AfxMessageBox("表内数据为空"); 
                        return false; 
                } 
 
                // 读入库中各字段并加入列表框中 
                while(!m_pRecordset->adoEOF) 
                { 
                        var = m_pRecordset->GetCollect("ValuesName"); 
                        if(var.vt != VT_NULL) 
                                strName = (LPCSTR)_bstr_t(var); 
                        var = m_pRecordset->GetCollect("Values"); 
                        if(var.vt != VT_NULL) 
                                strValues = (LPCSTR)_bstr_t(var); 
 
                        m_AccessList.AddString( strName + " --> "+strValues ); 
 
                        m_pRecordset->MoveNext(); 
                } 
 
                // 默认列表指向第一项,同时移动记录指针并显示 
                m_AccessList.SetCurSel(0);  
        } 
        catch(_com_error e) 
        { 
                strErrorMessage.Format("读取数据库记录失败!\r\n错误信息:%s",e.ErrorMessage()); 
                AfxMessageBox(strErrorMessage);///显示错误信息 
                return false; 
        } 
         
        return TRUE;  // return TRUE unless you set the focus to a control 
} |   
 
 
 
 |