search
HomeDatabaseMysql TutorialVC下利用ADO访问Access数据库(Use ADO)(转载)

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.  

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

  6. try

  7. {

  8.         CoInitialize(NULL);

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

  10.         CString strFileName;

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

  12.         m_conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileName,

  13.                 "","",adConnectUnspecified);            //用户名,密码

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

  15. }

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

  17. {

  18.         AfxMessageBox("数据库连接错误!",MB_ICONEXCLAMATION);

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

  20. }


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

(1)增

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

  2.  

  3. CString strMyName = "MyName";

  4. CString strSex = "true";

  5.  

  6. CString sql;

  7. sql = "insert into MYTABLE (NAME,SEX) ";

  8. sql += "values ('" + strMyName +"',";

  9. sql += " " + strSex + " ";

  10. sql += ")";

  11.  

  12. try

  13. {

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

  15. }

  16. catch(_com_error e)

  17. {

  18.         AfxMessageBox("数据库增错误",MB_ICONEXCLAMATION);

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

  20. }


(2)删

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

  2.  

  3. CString strID = "1";    //所要删除记录的ID号

  4. CString sql;

  5.  

  6. sql = "delete from MYTABLE ";   //注意需要有空格

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

  8.  

  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. }


(3)改

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

  2.  

  3. CString sql;

  4. CString strMyName = "MyName";

  5. CString strSex = "true";

  6. CString strID = "1";    //所要更新的记录ID

  7.  

  8. sql = "update MYTABLE set ";

  9. sql += "NAME = '" + strMyName +"', ";

  10. sql += "SEX = " + strSex + " ";

  11. sql += "where id = " + strID;

  12.  

  13. try

  14. {

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

  16. }

  17. catch(_com_error e)

  18. {

  19.         AfxMessageBox("数据库删错误",MB_ICONEXCLAMATION);

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

  21. }


(4)查

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

  2. CString sql;

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

  4.  

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

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

  7.  

  8. try

  9. {

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

  11. }

  12. catch(_com_error e)

  13. {

  14.         AfxMessageBox("数据库查错误",MB_ICONEXCLAMATION);

  15.         exit(0);

  16. }

  17.  

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

  19.  

  20. try

  21. {

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

  23.         {

  24.                 _variant_t vID, vName, vSex;

  25.                

  26.                 vID = m_res->GetCollect("ID");

  27.                 vName = m_res->GetCollect("NAME");

  28.                 vSex = m_res->GetCollect("SEX");

  29.        

  30.                 ///////////////////////////////////////////////

  31.                 int nID;

  32.                 nID = (long)vID.lVal;

  33.                 ///////////////////////////////////////////////

  34.                 CString strName;

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

  36.                 {

  37.                         strName = (LPCTSTR)vName.bstrVal;

  38.                 }

  39.                 ///////////////////////////////////////////////

  40.                 bool bSex;

  41.                 if(VT_NULL != vSex.vt )

  42.                 {

  43.                         bSex = (bool)vSex.boolVal;

  44.                 }

  45.                 ////////////////////////////////////////////////

  46.                

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

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

  49.                

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

  51.         }

  52. }

  53. catch(_com_error e)

  54. {

  55.         AfxMessageBox("数据库查错误",MB_ICONEXCLAMATION);

  56.         exit(0);

  57. }


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

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在Java中访问JsonNode的JSON字段、数组和嵌套对象?如何在Java中访问JsonNode的JSON字段、数组和嵌套对象?Aug 30, 2023 pm 11:05 PM

一个JsonNode是Jackson的JSON树模型,它可以将JSON读取为JsonNode实例,并将JsonNode写入JSON。通过创建ObjectMapper实例并调用readValue()方法,我们可以使用Jackson将JSON读取为JsonNode。我们可以使用JsonNode类的get()方法访问字段、数组或嵌套对象。我们可以使用asText()方法返回有效的字符串表示,并使用JsonNode类的asInt()方法将节点的值转换为Javaint。在下面的示例中,我们可以访问Json

iOS 17:如何控制哪些应用程序可以访问您的照片iOS 17:如何控制哪些应用程序可以访问您的照片Sep 13, 2023 pm 09:09 PM

在iOS17中,Apple可以更好地控制应用程序可以看到的照片内容。继续阅读,了解如何按应用管理应用访问权限。在iOS中,Apple的应用内照片选取器可让您与应用共享特定照片,而照片图库的其余部分则保持私密。应用必须请求访问您的整个照片图库,您可以选择授予应用以下访问权限:受限访问–应用程序只能看到您可以选择的图像,您可以随时在应用程序中或通过转到“设置”>“隐私和安全”>“照片”来查看所选图像。完全访问权限–App可以查看照片

如何利用GitLab进行项目文档管理如何利用GitLab进行项目文档管理Oct 20, 2023 am 10:40 AM

如何利用GitLab进行项目文档管理一、背景介绍在软件开发过程中,项目文档是非常重要的资料,不仅能够帮助开发团队了解项目的需求和设计,还能提供给测试团队和客户参考。为了方便项目文档的版本控制和团队协作,我们可以利用GitLab来进行项目文档管理。GitLab是一个基于Git的版本控制系统,除了支持代码管理,还可以管理项目文档。二、GitLab环境搭建首先,我

microsoft access是什么软件microsoft access是什么软件Mar 03, 2023 am 11:37 AM

microsoft access是由微软发布的关系数据库管理系统;它结合了MicrosoftJet Database Engine和图形用户界面两项特点,是Microsoft Office的系统程序之一。

使用Python访问各种音频和视频文件的元数据使用Python访问各种音频和视频文件的元数据Sep 05, 2023 am 11:41 AM

我们可以使用Mutagen和Python中的eyeD3模块访问音频文件的元数据。对于视频元数据,我们可以使用电影和Python中的OpenCV库。元数据是提供有关其他数据(例如音频和视频数据)的信息的数据。音频和视频文件的元数据包括文件格式、文件分辨率、文件大小、持续时间、比特率等。通过访问这些元数据,我们可以更有效地管理媒体并分析元数据以获得一些有用的信息。在本文中,我们将了解Python提供的一些用于访问音频和视频文件元数据的库或模块。访问音频元数据一些用于访问音频文件元数据的库是-使用诱变

vb中怎么连接access数据库vb中怎么连接access数据库Oct 09, 2023 am 11:38 AM

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。详细介绍:1、引用必要的命名空间,在VB项目中,首先需要引用“System.Data`和`Microsoft.Office.Interop.Access”命名空间,以便使用ADO.NET和Access相关的类和方法,可以在VB项目的引用中添加这些命名等等。

解决Tomcat部署war包后无法访问的问题的方法解决Tomcat部署war包后无法访问的问题的方法Jan 13, 2024 pm 12:07 PM

如何解决Tomcat部署war包后无法成功访问的困扰,需要具体代码示例Tomcat作为一个广泛使用的JavaWeb服务器,允许开发人员将自己开发的Web应用打包为war文件进行部署。然而,有时候我们可能会遇到部署war包后无法成功访问的问题,这可能是由于配置不正确或其他原因引起的。在本文中,我们将提供一些解决这个困扰的具体代码示例。一、检查Tomcat服务

win7修改文件提示更改权限拒绝访问如何解决win7修改文件提示更改权限拒绝访问如何解决Jul 04, 2023 pm 07:01 PM

  win7修改文件提示更改权限拒绝访问如何解决?一些系统文件在进行修改的时候,常常会提示我们没有权限去进行操作。我们可以去进行文件夹权限的功能关闭,或者获取管理员权限。需要修改此类文件的用户,一起来看看接下来具体的教程分享吧。win7修改文件提示更改权限拒绝访问解决办法  1、首先选中对应文件夹,点击上方工具,选中文件夹选项。  2、进入查看选项卡。  3、取消勾选使用简单文件共享然后确定。  4、然后右键选择对应文件夹,点击属性。  5、进入安全选项卡。  6、选择图示位置,点击高级。  7

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version