• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

VC下利用ADO访问Access数据库(Use ADO)(转载)

mysql 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

VC下利用ADO直接访问Access数据库步骤不需要用户建立ODBC数据源) 1.包含相关动态链接库 //在StdAfx.h中,最后部分添加(注意:一定要在最后部分,否则会编译出错) #import c:/Program Files/Common Files/System/ado/msado15.dll no_namespace rename(EOF,adoEO

VC下利用ADO直接访问Access数据库步骤不需要用户建立ODBC数据源)

1.包含相关动态链接库

  1. //在StdAfx.h中,最后部分添加(注意:一定要在最后部分,否则会编译出错)

  2. #import “c:/Program Files/Common Files/System/ado/msado15.dll” no_namespace rename(“EOF”,”adoEOF”)

2.连接的创建与初始化

  1. //相关成员变量

  2. _ConnectionPtr m_conn;

  3. _RecordsetPtr m_res;

  4. //成员函数块(一般写在CDocment类构造函数即可)

  5. try

  6. {

  7. CoInitialize(NULL);

  8. m_conn.CreateInstance(_uuidof(Connection));

  9. CString strFileName;

  10. strFileName = “MYBASE.mdb”; //添加相应你的数据库的文件名,编辑状态应放在源文件目录下

  11. m_conn->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + strFileName,

  12. “”,“”,adConnectUnspecified); //用户名,密码

  13. m_res.CreateInstance(_uuidof(Recordset));

  14. }

  15. catch(_com_error e) //异常检测

  16. {

  17. AfxMessageBox(“数据库连接错误!”,MB_ICONEXCLAMATION);

  18. exit(0); //错误,程序退出

  19. }

3.数据库相关操作(操作方法很多,这里只提供一种简易操作)
假设数据库表设计如下:
表名: MYTABLE
表设计:
自动编号类型 ID
字符串类型 NAME
BOOL类型 SEX

(1)增

  1. _variant_t m_resa; //可声明为成员变量

  2. CString strMyName = “MyName”;

  3. CString strSex = “true”;

  4. CString sql;

  5. sql = “insert into MYTABLE (NAME,SEX) “;

  6. sql += “values (‘” + strMyName +“‘,”;

  7. sql += ” “ + strSex + ” “;

  8. sql += “)”;

  9. try

  10. {

  11. m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行”增”操作

  12. }

  13. catch(_com_error e)

  14. {

  15. AfxMessageBox(“数据库增错误”,MB_ICONEXCLAMATION);

  16. exit(0); //错误,程序退出

  17. }

(2)删

  1. _variant_t m_resa; //可声明为成员变量

  2. CString strID = “1”; //所要删除记录的ID号

  3. CString sql;

  4. sql = “delete from MYTABLE “; //注意需要有空格

  5. sql += “where ID = “ + strID; //其他语法详查SQL语句

  6. try

  7. {

  8. m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行”增”操作

  9. }

  10. catch(_com_error e)

  11. {

  12. AfxMessageBox(“数据库删错误”,MB_ICONEXCLAMATION);

  13. exit(0); //错误,程序退出

  14. }

(3)改

  1. _variant_t m_resa; //可声明为成员变量

  2. CString sql;

  3. CString strMyName = “MyName”;

  4. CString strSex = “true”;

  5. CString strID = “1”; //所要更新的记录ID

  6. sql = “update MYTABLE set “;

  7. sql += “NAME = ‘” + strMyName +“‘, “;

  8. sql += “SEX = “ + strSex + ” “;

  9. sql += “where id = “ + strID;

  10. try

  11. {

  12. m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText); //执行”增”操作

  13. }

  14. catch(_com_error e)

  15. {

  16. AfxMessageBox(“数据库删错误”,MB_ICONEXCLAMATION);

  17. exit(0); //错误,程序退出

  18. }

(4)查

  1. _variant_t m_resa; //可声明为成员变量

  2. CString sql;

  3. sql = “Select * from MYTABLE”; //查询语句改变,相应下面的语句也要改变

  4. //#include //需加入头文件

  5. //CArray m_Array; //可用容器保存你取得的数据

  6. try

  7. {

  8. m_res = m_conn->Execute((_bstr_t)sql,&m_resa,adCmdText);

  9. }

  10. catch(_com_error e)

  11. {

  12. AfxMessageBox(“数据库查错误”,MB_ICONEXCLAMATION);

  13. exit(0);

  14. }

  15. //m_Array.RemoveAll(); //清空容器

  16. try

  17. {

  18. while(!m_res->adoEOF) //循环遍历记录

  19. {

  20. _variant_t vID, vName, vSex;

  21. vID = m_res->GetCollect(“ID”);

  22. vName = m_res->GetCollect(“NAME”);

  23. vSex = m_res->GetCollect(“SEX”);

  24. ///////////////////////////////////////////////

  25. int nID;

  26. nID = (long)vID.lVal;

  27. ///////////////////////////////////////////////

  28. CString strName;

  29. if(VT_NULL != vName.vt ) //如果数据不为空

  30. {

  31. 本文来源gaodai#ma#com搞@@代~&码*网/

  32. strName = (LPCTSTR)vName.bstrVal;

  33. }

  34. ///////////////////////////////////////////////

  35. bool bSex;

  36. if(VT_NULL != vSex.vt )

  37. {

  38. bSex = (bool)vSex.boolVal;

  39. }

  40. ////////////////////////////////////////////////

  41. //CMyClass one(nID, strName, bSex); //创建数据对象

  42. //m_Array.Add(one); //加入数组

  43. m_res->MoveNext(); //移动到下一条记录

  44. }

  45. }

  46. catch(_com_error e)

  47. {

  48. AfxMessageBox(“数据库查错误”,MB_ICONEXCLAMATION);

  49. exit(0);

  50. }

4.关闭数据库

  1. try

  2. {

  3. if(m_res != NULL)

  4. {

  5. m_res->Close(); //关闭记录集

  6. }

  7. if(m_conn != NULL)

  8. {

  9. m_conn->Close(); //关闭连接

  10. }

  11. }

  12. catch(_com_error e)

  13. {

  14. AfxMessageBox(“数据库关闭错误”,MB_ICONEXCLAMATION);

  15. exit(0);

  16. }

5.总结
数据库操作多种多样,可以查查相关资料
这里只介绍了简单的一种操作,面向对象封装一下,直接调用即可


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:VC下利用ADO访问Access数据库(Use ADO)(转载)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址