编译没有毛病,但打开后总是显示"读取数据库失败",求助!!!!!
以下是,BuildingInfoDlg.cpp : 实现文件内容,
编译没有毛病,但打开后总是显示-------"读取数据库失败",
在"BOOL CBuildingInfoDlg::OnInitDialog()"中实现,这个程序是照书打的,
但不知道是哪出了毛病?
请高手指教一二,谢谢!!!!!!
// BuildingInfoDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "BuildingInfo.h"
#include "BuildingInfoDlg.h"
#include "DlgProxy.h"
#include ".\buildinginfodlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
_variant_t vName,vDate,vID,vPrice,vAddress,vDev;
bool m_bAutoSave;
int m_nCurrentSel;
//.....代码省略!!!!!!!!!!!!!
IMPLEMENT_DYNAMIC(CBuildingInfoDlg, CDialog);
CBuildingInfoDlg::CBuildingInfoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBuildingInfoDlg::IDD, pParent)
, m_nID(0)
, m_sName(_T(""))
, m_strAdd(_T(""))
, m_strDev(_T(""))
, m_nPrice(0)
, m_tDate(COleDateTime::GetCurrentTime())
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pAutoProxy = NULL;
}
//.....代码省略!!!!!!!!!!!!!
// CBuildingInfoDlg 消息处理程序
BOOL CBuildingInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//m_pRecordset.CreateInstance("ADODB.Recordset");为什么创建数据库失败!!!!!!!!???????????????????????????????
// 将\“关于...\”菜单项添加到系统菜单中。
m_cDelItem.EnableWindow(false);
::SendMessage(m_Reallist.m_hWnd,LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT);
m_Reallist.InsertColumn(0,"楼盘 ID",LVCFMT_LEFT,60);
m_Reallist.InsertColumn(1,"楼盘名称",LVCFMT_LEFT,100);
m_Reallist.InsertColumn(2,"价格",LVCFMT_LEFT,60);
m_Reallist.InsertColumn(3,"开盘日期",LVCFMT_LEFT,100);
m_Reallist.InsertColumn(4,"楼盘地点",LVCFMT_LEFT,150);
m_Reallist.InsertColumn(5,"楼盘开发商",LVCFMT_LEFT,150);
int nItem;
//_variant_t vName,vDate,vID,vPrice,vAddress,vDev;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM realestate",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
// m_bSuccess=TRUE;
while(!m_pRecordset->adoEOF)
{
vID=m_pRecordset->GetCollect("索引");
vName=m_pRecordset->GetCollect("楼盘名称");
vAddress=m_pRecordset->GetCollect("楼盘地点");
vDev=m_pRecordset->GetCollect("楼盘开发商");
vPrice=m_pRecordset->GetCollect("价格");
vDate=m_pRecordset->GetCollect("开盘日期");
nItem=m_Reallist.InsertItem(0xffff,(_bstr_t)vID);
m_Reallist.SetItem(nItem,1,1,(_bstr_t)vName,NULL,0,0,0);
m_Reallist.SetItem(nItem,2,1,(_bstr_t)vPrice,NULL,0,0,0);
m_Reallist.SetItem(nItem,3,1,(_bstr_t)vDate,NULL,0,0,0);
m_Reallist.SetItem(nItem,4,1,(_bstr_t)vAddress,NULL,0,0,0);
m_Reallist.SetItem(nItem,5,1,(_bstr_t)vDev,NULL,0,0,0);
m_pRecordset->MoveNext();
}
}
catch(_com_error e)
{
AfxMessageBox("读取数据库失败!");//=======出问题的方???????????????????
}
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
HRESULT hr;
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=realestate.mdb","","",adModeUnknown);
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);
return false;
}
//m_pRecordset.CreateInstance("ADODB.Recordset");
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
//.....代码省略!!!!!!!!!!!!!
// End ==============================BuildingInfoDlg.cpp : 实现文件