关于ADO与access数据库连接的问题求教(都研究了八天了)
是这样的,我封装了一个ADOConn的类,然后再桌面上建了一个access数据库,但是始终提示连接不上数据库,求指教,我是菜鸟。具体代码如下:
ADOConn类中的OnInitADOConn函数如下:
BOOL ADOConn::OnInitADOConn(LPCTSTR ConnStr)
{
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = _bstr_t(ConnStr);//"Provider=SQLOLEDB; Server=127.0.0.1;Database=EventLogg; uid=event; pwd=event;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
return TRUE;
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
TRACE(e.Description());
// sprintf(error,"连接数据库失败 请检查连接字符串\r\n当前连接字符串为:%s",ConnStr);
// throw new CADOException(error);
throw new CADOException("连接数据库失败");
}
}
再创建列表格式的代码是下面这样的:
BOOL CDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_Grid.SetExtendedStyle(LVS_EX_FLATSB | LVS_EX_FULLROWSELECT
| LVS_EX_GRIDLINES | LVS_EX_ONECLICKACTIVATE);
m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,70,0);
m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,70,0);
m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,70,0);
m_Grid.InsertColumn(3,"职务",LVCFMT_LEFT,70,0);
m_Grid.InsertColumn(4,"部门",LVCFMT_LEFT,70,0);
m_Grid.InsertColumn(5,"电话",LVCFMT_LEFT,130,0);
AddToGrid();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
AddToGrid函数如下:
void CDlg::AddToGrid()
{
ADOConn m_adoconn;
m_adoconn.OnInitADOConn("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Administrator\Desktop\ado.mdb;Persist Security Info=False");
CString sql;
sql.Format("select * from TB_PHONEBOOK");
m_adoconn.m_pRecordset=m_adoconn.GetRecordSet((_bstr_t)sql);
int i=0;
while(!m_adoconn.m_pRecordset->adoEOF)
{
m_Grid.InsertItem(i,"");
m_Grid.SetItemText(i,0,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("编号"));
m_Grid.SetItemText(i,1,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("姓名"));
m_Grid.SetItemText(i,2,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("性别"));
m_Grid.SetItemText(i,3,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("职务"));
m_Grid.SetItemText(i,4,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("部门"));
m_Grid.SetItemText(i,5,(char*)(_bstr_t)m_adoconn.m_pRecordset->GetCollect("电话"));
m_adoconn.m_pRecordset->MoveNext();
i++;
}
m_adoconn.ExitConnection();