VC++连接Access
/*
*读取Access数据库中的数据
*/
void CMFCSQLDlg::OnButton1()
{
CoInitialize(NULL);
_ConnectionPtr m_pAppConn;
HRESULT hResult;
try
{
hResult = m_pAppConn.CreateInstance(("ADODB.Connection"));///创建Connection对象
if(SUCCEEDED(hResult))
{
m_pAppConn->Open("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source = .//DataBase//aa.mdb", "","",adModeUnknown);
}
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;
m_pCommand.CreateInstance("ADODB.Command");
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数
m_pCommand->ActiveConnection = m_pAppConn;///非常关键的一句,将建立的连接赋值给它
m_pCommand->CommandText = "SELECT * FROM myself";///命令字串
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集
m_pRecordset->MoveFirst();
for(;!m_pRecordset->adoEOF;m_pRecordset->MoveNext())
{
// printf(m_pRecordset->GetCollect(("myage")));
_variant_t var;
var = m_pRecordset->GetCollect(("myage"));
if(var.vt!=VT_NULL)
{
//printf((LPCTSTR)_bstr_t(var));
AfxMessageBox((LPCTSTR)_bstr_t(var));
}
}
}
catch(_com_error e)///捕捉异常
{
// CString errormessage;
// errormessage.Format(_T("连接数据库失败!/r/n错误信息:%s"),e.ErrorMessage());
//AfxMessageBox(errormessage);
//printf("Error:%s",e.ErrorMessage());
AfxMessageBox(e.ErrorMessage());
hResult = -1L;
}
}