Ewenyee 2015-07-14 15:51 采纳率: 50%
浏览 1851
已采纳

关于vc6.0利用ADO动态链接ACCESS不成功的问题

void CDBDlg::OnButtonOpen()
{
// TODO: Add your control notification handler code here
//建立一个对话框,选择mdb文件

static char BASED_CODE szFilter[] = "mbd文件 (*.mdb)|*.mdb|所有文件 (*.*)|*.*||";
char Buffer[MAX_PATH];
::GetCurrentDirectory(MAX_PATH,Buffer); 
CFileDialog FileDlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter,NULL );
FileDlg.m_ofn.lpstrInitialDir=Buffer;
if(IDOK==FileDlg.DoModal())
{
   lpstrName=FileDlg.GetPathName();
}




//连接数据库   
_bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=lpstrName"));
try
{
    m_pConnection.CreateInstance(__uuidof(Connection));
    m_pConnection->Open(strcnn,_T(""),_T(""),adModeUnknown);
    m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch (_com_error e)
{
    AfxMessageBox("连接数据库失败");
    return;
}

//打开数据库
try
{

     _bstr_t bstrSQL="SELECT * FROM defects ";//order by RecordNum desc";
    m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    while(!m_pRecordset->adoEOF)
    {   m_Grid.InsertItem(0,"");
        m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("valid"));
        m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("maxpost"));
        m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("maxminor"));
        m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("defecttype"));
        m_Grid.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect("maxval1"));
        m_Grid.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect("length"));
        m_Grid.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect("defectclass"));
        m_Grid.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect("tbce"));
        m_Grid.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect("speedatmaxval"));
        m_Grid.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect("postedspd"));
        m_pRecordset->MoveNext();
    }
    m_pRecordset->Close();
}
catch (_com_error e)
{
    AfxMessageBox("数据库打开失败");
}

}

  • 写回答

3条回答

  • threenewbee 2015-07-14 16:17
    关注

    你那样写根本不会将文件名拼接在连接字符串里
    CString dd;

    dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",lpstrName);

    hr = m_pConnect->Open((_bstr_t)dd,"","",adModeUnknown);

    具体:
    http://www.cnblogs.com/cy163/archive/2007/04/05/700596.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决