正文

【原创】VC中访问ACCESS数据库2008-07-17 01:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/bclz/36757.html

分享到:

VC6访问ACCESS数据库   不会用数据库,有些东西写的不好!   一、完成初始化工作 本程序完成一个简单的查询功能能,根据输入的代码,输出代码对应的信息。 首先,创建基于对话框的应用程序,导入ADO库 在stdafx.h中添加代码: #import "C:\Program Files\Common Files\System\ado\msado15.dll"no_namespace rename("EOF","rsEOF")   第二步,完成的一些初始化工作,打开本地数据库 // 初始化COM,创建ADO连接等操作          AfxOleInit();          m_pConnection.CreateInstance(__uuidof(Connection));            // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,          // 因为它有时会经常出现一些想不到的错误。          try                          {                           // 打开本地Access库Demo.mdb                    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);                             }          catch(_com_error e)          {                    AfxMessageBox("数据库连接失败,确认数据库Demo.mdb是否在当前路径下!");                    return FALSE;          }   二、增加一个按钮,点击后从数据库中查询Edit框中输入的信息            CString str;  //定义一个变量,用于存放EDIT中的输入          GetDlgItemText(IDC_EDIT_CODE,str);                     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());          }            _variant_t var;          CString strName,strAge;            // 清空列表框          m_AccessList.ResetContent();          strName=strAge="";            // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,          // 因为它有时会经常出现一些想不到的错误。          try          {                    if(!m_pRecordset->BOF)                             m_pRecordset->MoveFirst();                    else                    {                             AfxMessageBox("表内数据为空");                             return;                    }                      // 循环比较,若有相符的信息则在List中输出,返回。查询结束。                    //否则,输出未找到代码                    while(!m_pRecordset->rsEOF)                    {                             if(str==(_bstr_t)m_pRecordset->GetCollect("Name"))                             {                                      ((CListBox*)GetDlgItem(IDC_LIST_INFO))->AddString((_bstr_t)m_pRecordset->GetCollect("Age"));                                      m_pRecordset->MoveNext();                                      return;                             }                             else                             {                                      m_pRecordset->MoveNext();                             }                    }                      // 默认列表指向第一项,同时移动记录指针并显示                    m_AccessList.SetCurSel(0);          }          catch(_com_error *e)          {                    AfxMessageBox(e->ErrorMessage());          }                    ((CListBox*)GetDlgItem(IDC_LIST_INFO))->AddString("未找到"); }

阅读(4635) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册