注册 登录
编程论坛 ACCESS论坛

[求助]ado访问access数据库

liaopan_77 发布于 2006-08-19 12:48, 1769 次点击

void CTestremotedataDlg::OnConnect()
{

// TODO: Add your control notification handler code here
_ConnectionPtr m_pConnection;
// 初始化COM,创建ADO连接等操作
try
{
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("DSN=test1;"/*数据源名称*/,
"",/*用户*/
"",/*密码*/-1);//连接数据库
if(m_pConnection->State)
{ AfxMessageBox("Connecting is succeed!");}
}
}

catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");
}
//连接数据库成功
_RecordsetPtr m_Recordset;
m_Recordset.CreateInstance("ADODB.Recordset");

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。jingzhou xu
try
{
m_Recordset->Open("select*from sheet1", m_Recordset.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText );这个获得记录集对象老是失败
if(m_Recordset->State)
{
AfxMessageBox("Recordset succeed!");//
}
}
catch(_com_error e)
{
AfxMessageBox("Recordset failed!");
}

}

ado 访问access数据库,数据源test1,表格sheet1;
初始化com都在前面的 Initstance()函数中做过了

这个获得记录集对象老是失败,连接数据库都对了成功了,但是获得记录集对象老是失败!


请大家看看怎么回事,在线等!

2 回复
#2
tcdyc2006-09-03 08:36
试试这个

// 使用ADO创建数据库记录集
m_pRecordset.CreateInstance(__uuidof(Recordset));

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。jingzhou xu
try
{
m_pRecordset->Open("SELECT * FROM DemoTable", // 查询DemoTable表中所有字段
theApp.m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
应该解决了!!

#3
jxyga1112008-06-20 19:38
有必要这么长么
1