首页 数据库 mysql教程 用VC++操作ACESS数据库(创建数据库、建立新表、连接、增删查改)

用VC++操作ACESS数据库(创建数据库、建立新表、连接、增删查改)

Jun 07, 2016 pm 02:59 PM
创建 操作 数据库 连接

首先在 StdAfx.h 中包含如下头文件 #import "C:\Program Files\Common Files\system\ado\msadox.dll" // 创建数据库必用 #import"C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF") msado

首先在StdAfx.h中包含如下头文件
#import "C:\Program Files\Common Files\system\ado\msadox.dll"  // 创建数据库必用
#import"C:\Program Files\Common Files\System\ADO\msado15.dll" named_guids rename("EOF","adoEOF"), rename("BOF","adoBOF")

msadox.dll msado15.dll根据自己电脑上的位置进行加载,备注:两个#import位置不能调换,调换链接出错

1.      创建数据库
// 创建数据库
void CTestDlg::OnCreateAdoMdb() 
{
       HRESULT hr = S_OK;  CString filename="c:\\test.mdb";
       //Set ActiveConnection of Catalog to this string 
       CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source="+filename));
       try
       {
             ADOX::_CatalogPtr m_pCatalog = NULL;
              hr = m_pCatalog.CreateInstance(__uuidof (ADOX::Catalog));
              if(FAILED(hr))
              {
                    _com_issue_error(hr);
              }
              else
              {
                     m_pCatalog->Create(_bstr_t(strcnn));
                     //Create MDB
              }
              AfxMessageBox(_T("ok"));
       }
       catch(_com_error &e)
       {
              // Notify the user of errors if any.
              AfxMessageBox(_T("error"));
       }
}

2、  打开数据库
BOOL CTestApp::InitInstance()
{
       AfxEnableControlContainer();
       CoInitialize(NULL);
         .......
       
       return TRUE;
}

3.  创建新表
void CTestDlg::OnMainCreate() 
{
       try
       {
             _ConnectionPtr pConn;pConn.CreateInstance(__uuidof(Connection));
             _RecordsetPtr  pRs;  pRs.CreateInstance(__uuidof(Recordset));
             _CommandPtr    Cmd;  Cmd.CreateInstance( __uuidof( Command ) );
             try                 
              {     
                     CString dd;  CString file="c:\\NXYH.mdb";
                     //CString dd;  CString file="NXYH.mdb";
                     dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
                    pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
              }
             catch(_com_error e)
              {
                    AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
              } 
              // 如果本表不存在时,可以创建本表,存在时无法创建.
              try
              {
                    _variant_t RecordsAffected;  CString command1,command2,myfilename="yours";
                     command1.Format("CREATE TABLE %s(ID INTEGER,username TEXT(5),old INTEGER,birthday

DATETIME)",myfilename);
                    pConn->Execute(_bstr_t(command1),&RecordsAffected,adCmdText);
                     command2.Format("INSERT INTO %s(ID,username,old,birthday) VALUES

(1,'washton',26,'1970/1/1')",myfilename);
                     pConn->Execute(_bstr_t(command2),&RecordsAffected,adCmdText);
                    AfxMessageBox("created.");
              }
             catch(...)
              {
                   AfxMessageBox("table  have already created.");
             }
       }
       catch(...)
       {
     }
}

4.  删除记录

void CTestDlg::OnMainDel() 
{
      try
       {
             _ConnectionPtr pConn;
             _RecordsetPtr  pRs;  
             pConn.CreateInstance(__uuidof(Connection));
             pRs.CreateInstance(__uuidof(Recordset));
             try                 
              {     
                     CString dd;  CString file="c:\\NXYH.mdb";
                     dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);
                    pConn->Open((_bstr_t)dd,"","",adModeUnknown); // 打开本地Access库Demo.mdb
              }
             catch(_com_error e)
              {
                    AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
              } 
             try
              {
                    pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                           pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                           adOpenDynamic,
                           adLockOptimistic,
                           adCmdText );
              }
             catch(_com_error *e)
              {
                    AfxMessageBox(e->ErrorMessage());
              }
              _variant_t var;
             while (!pRs->adoEOF)   
              {    
                    pRs->MoveFirst();
                     pRs->Delete(adAffectCurrent); //删除当前记录
                     pRs->MoveNext();   
              }     
             MessageBox("delete--over");  pRs->Update(); 
             pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
       }   
      catch (_com_error &e )  
    {    
             printf("Error:\n");   
             printf("Code = %08lx\n", e.Error());    
             printf("Meaning = %s\n", e.ErrorMessage());  
             printf("Source = %s\n", (LPCSTR) e.Source());    
      }
}
 
5.  增加记录

void CTestDlg::OnMainAdd() 
{
      try
       {
             _ConnectionPtr pConn;
             _RecordsetPtr  pRs;  
             pConn.CreateInstance(__uuidof(Connection));
             pRs.CreateInstance(__uuidof(Recordset));
             try                 
              {     
                    // 打开本地Access库Demo.mdb
                    pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
              }
             catch(_com_error e)
              {
                    AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
              } 
             try
              {
                    pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                           pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                           adOpenDynamic,
                           adLockOptimistic,
                           adCmdText );
              }
             catch(_com_error *e)
              {
                    AfxMessageBox(e->ErrorMessage());
              }
               // 增加新元素
              XX=123.345; YY=222.434; HH=1445;
              for(int i=0;i              {
                     m_Name.Format("D%d",i+1);
                    pRs->AddNew();
                    //pRs->PutCollect("ID",_variant_t((long)(i+10)));
                    pRs->PutCollect("Name", _variant_t(m_Name));
                    pRs->PutCollect("X",_variant_t((double)(XX)));
                    pRs->PutCollect("Y",_variant_t((double)(YY)));
                    pRs->PutCollect("H",_variant_t((double)(HH)));
              }
             pRs->Update();  MessageBox("add--over");
             pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
       }   
      catch (_com_error &e )  
    {    
             printf("Error:\n");   
             printf("Code = %08lx\n", e.Error());    
             printf("Meaning = %s\n", e.ErrorMessage());  
             printf("Source = %s\n", (LPCSTR) e.Source());    
       }
}

6.  修改记录
void CTestDlg::OnMainChange() 
{
      try
       {
             _ConnectionPtr pConn;
             _RecordsetPtr  pRs;  
             pConn.CreateInstance(__uuidof(Connection));
             pRs.CreateInstance(__uuidof(Recordset));
             try                 
              {     
                    // 打开本地Access库Demo.mdb
                    pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NXYH.mdb","","",adModeUnknown);
              }
             catch(_com_error e)
              {
                    AfxMessageBox("数据库连接失败,确认数据库NXYH.mdb是否在当前路径下!");
              } 
             try
              {
                    pRs->Open("SELECT * FROM coordinate", // 查询DemoTable表中所有字段
                           pConn.GetInterfacePtr(),      // 获取库接库的IDispatch指针
                           adOpenDynamic,
                           adLockOptimistic,
                           adCmdText );
              }
             catch(_com_error *e)
              {
                    AfxMessageBox(e->ErrorMessage());
              }
             // 修改数据
             _variant_t var;
             while (!pRs->adoEOF)   
             {    
                    //var = pRs->GetCollect("Name");
                     //if(var.vt != VT_NULL) m_Name = (LPCSTR)_bstr_t(var);
                    //MessageBox(m_Name); //m_Name=m_Name.Left(2)+"*";
                    //m_Name+="main";
                     var = pRs->GetCollect("X"); 
                     if(var.vt != VT_NULL) m_X = (LPCSTR)_bstr_t(var);
                    double XX=100.789; //XX+=atof(m_X);
                    pRs->PutCollect("X",_variant_t((double)(XX)));
                   //pRs->PutCollect("Name", _variant_t(m_Name));
                    pRs->MoveNext();   
              }     
             MessageBox("change--over");
              pRs->Update(); 
             pRs->Close(); pConn->Close(); pRs=NULL; pConn=NULL;
       }   
      catch (_com_error &e )  
    {    
             printf("Error:\n");   
             printf("Code = %08lx\n", e.Error());    
             printf("Meaning = %s\n", e.ErrorMessage());  
             printf("Source = %s\n", (LPCSTR) e.Source());    
      }
}

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 iOS 18 新增'已恢复”相册功能 可找回丢失或损坏的照片 Jul 18, 2024 am 05:48 AM

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步

Hibernate 如何实现多态映射? Hibernate 如何实现多态映射? Apr 17, 2024 pm 12:09 PM

Hibernate多态映射可映射继承类到数据库,提供以下映射类型:joined-subclass:为子类创建单独表,包含父类所有列。table-per-class:为子类创建单独表,仅包含子类特有列。union-subclass:类似joined-subclass,但父类表联合所有子类列。

在PHP中使用MySQLi建立数据库连接的详尽教程 在PHP中使用MySQLi建立数据库连接的详尽教程 Jun 04, 2024 pm 01:42 PM

如何在PHP中使用MySQLi建立数据库连接:包含MySQLi扩展(require_once)创建连接函数(functionconnect_to_db)调用连接函数($conn=connect_to_db())执行查询($result=$conn->query())关闭连接($conn->close())

深入解析HTML如何读取数据库 深入解析HTML如何读取数据库 Apr 09, 2024 pm 12:36 PM

HTML无法直接读取数据库,但可以通过JavaScript和AJAX实现。其步骤包括建立数据库连接、发送查询、处理响应和更新页面。本文提供了利用JavaScript、AJAX和PHP来从MySQL数据库读取数据的实战示例,展示了如何在HTML页面中动态显示查询结果。该示例使用XMLHttpRequest建立数据库连接,发送查询并处理响应,从而将数据填充到页面元素中,实现了HTML读取数据库的功能。

如何在PHP中处理数据库连接错误 如何在PHP中处理数据库连接错误 Jun 05, 2024 pm 02:16 PM

PHP中处理数据库连接报错,可以使用以下步骤:使用mysqli_connect_errno()获取错误代码。使用mysqli_connect_error()获取错误消息。通过捕获并记录这些错误信息,可以轻松识别并解决数据库连接问题,确保应用程序的顺畅运行。

Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Jun 25, 2024 pm 07:09 PM

目录Astar Dapp 质押原理质押收益 拆解潜在空投项目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 质押策略 & 操作“AstarDapp质押”今年初已升级至V3版本,对质押收益规则做了不少调整。目前首个质押周期已结束,第二质押周期的“投票”子周期刚开始。要获取“额外奖励”收益,需把握此关键阶段(预计持续至6月26日,现余不到5天)。我将细致拆解Astar质押收益,

饿了么绑定微信怎么操作 饿了么绑定微信怎么操作 Apr 01, 2024 pm 03:46 PM

饿了么这款软件里面汇集了各种不同的美食,大家可以在线挑选下单,商家接单后就会立即进行制作,用户们可以通过软件来绑定微信,想要了解具体的操作方法的话,记得来PHP中文网看看哦。饿了么绑定微信方法说明1、首先打开饿了么软件,进入到首页中后我们点击右下角的【我的】;2、然后在我的页面中我们需要点击左上角的【账号】;3、接着来到个人资料的页面中我们可以绑定手机、微信、支付宝、淘宝,在这里我们点击【微信】;4、最后点击过后在微信授权的页面中选好需要绑定的微信号之后点击【允许】即可;

Win8电脑开机密码忘记?这样操作立马恢复! Win8电脑开机密码忘记?这样操作立马恢复! Mar 27, 2024 pm 10:12 PM

Win8电脑开机密码忘记是很多人在日常使用电脑时会遇到的问题。当我们忘记了登录密码,会导致无法正常进入系统,给我们的日常使用带来不便。如果你正好碰到了这个问题,不必担心,下面我将介绍一些简单的操作,帮助你快速恢复Win8电脑的开机密码。方法一:使用Microsoft账户密码如果你的Win8电脑登录使用的是Microsoft账户,你可以尝试使用该账户的密码进行

See all articles