ADO操作数据库

转载 2015年07月07日 22:16:54
#include "StdAfx.h"
#include "Ado.h"
#include <string>
#include <vector>
using namespace std;
CAdo::CAdo(void)
{
 if (!SUCCEEDED(::CoInitialize(NULL)))
 {
  MessageBox(NULL, _T("初始化COM失败!!!"), _T("text"), MB_OK);
 }
 //  or  afxoleinit()  contain  construct and extract(析构)
 //AfxOleInit();
 m_pconnect.CreateInstance(__uuidof(Connection));
}
CAdo::~CAdo(void)
{
 ::CoUninitialize();
}
BOOL CAdo::OpenDatabase(string str1, string str2 , string str3 )
{
 TRACE("\nOpendatabase ");
 try
 {
  m_pconnect->Open(_bstr_t(str1.c_str()), _bstr_t(str2.c_str()), _bstr_t(str3.c_str()), adModeUnknown);
 }
 catch (_com_error e)
 {
  TRACE("open  fail!!!!\n");
  return FALSE;
 }
 return TRUE;
}
void     CAdo::CloseDatabase()
{
 if (m_pconnect->State)
 {
  m_pconnect->Close();
  m_pconnect = NULL;
  TRACE("\nclose  database");
 }
}
BOOL CAdo::initRecord()
{
 TRACE("\ninitrecord");
 m_precord.CreateInstance(__uuidof(Recordset));
 return TRUE;
}
BOOL CAdo::GetSlectData1(string sentence, string str1, string str)
{
 TRACE("select sentence");
 try
 {
  m_precord->Open(sentence.c_str(),m_pconnect.GetInterfacePtr(), adOpenDynamic,
   adLockOptimistic,adCmdText);
 }
 catch(_com_error e)
 {
  return FALSE;
 }
 TRACE("verify data");
 try
 {
  if (!m_precord->BOF)
  {
   m_precord->MoveFirst();
  } 
  else
  {
   return FALSE;
  }
 }
 catch(_com_error e)
 {
  return FALSE;
 }
 TRACE("get data");
 int x = 0;
 _variant_t var;
 while(!m_precord->adoEOF)
 {
  var = m_precord->GetCollect(_variant_t(str1.c_str()));
  if (var.vt != VT_NULL)
  {
   str = _com_util::ConvertBSTRToString((_bstr_t)var);
  }
  m_precord->MoveNext();
  x++;
 }
 m_precord->Close();
 return TRUE;
}
BOOL CAdo::InsertData(string str1, string str2)
{
 TRACE("\ninsertdata str");
 try
 {
  m_precord->Open("SELECT * FROM MultiLangString",m_pconnect.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);
  m_precord->AddNew();
  m_precord->PutCollect("date", _variant_t(str1.c_str()));
  m_precord->PutCollect("Money" ,_variant_t(str2.c_str()));
  m_precord->Update();
  m_precord->Close();
 }
 catch(_com_error e)
 {
  AfxMessageBox(e.Description());
  return FALSE;
 }
 return TRUE;
}
BOOL CAdo::InsertData(string str1, int ndata)
{
 m_precord->Open("SELECT * FROM MultiLangString",m_pconnect.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);
 m_precord->AddNew();
 m_precord->PutCollect(_variant_t(str1.c_str()), (_variant_t)(long)ndata);
 m_precord->Update();
 m_precord->Close();
 return TRUE;
}
void CAdo::fndeleateitem(int item)
{
 TRACE("\ndelete a item");
 try
 {
  m_precord->Open("SELECT * FROM MultiLangString",m_pconnect.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);
  if (!m_precord->BOF)
  {
   m_precord->MoveFirst();
   m_precord->Move(item-1);
   m_precord->Delete(adAffectCurrent);
   m_precord->Update();
   m_precord->Close();
  } 
  else
  {
   m_precord->Close();
  }
  
 }
 catch (_com_error* e)
 {
  AfxMessageBox(e->Description());
 }
}
void     CAdo::QueryData(DATAINFOS &Alldata)
{
 try
 {
  m_precord->Open("SELECT * FROM MultiLangString",m_pconnect.GetInterfacePtr(), adOpenDynamic,adLockOptimistic,adCmdText);
  if (!m_precord->BOF)
  {
   m_precord->MoveFirst();
  
   _variant_t var;
   while(!m_precord->adoEOF)
   {
    var = m_precord->GetCollect("date");
    if (var.vt != VT_NULL)
    {
     Alldata.date.push_back(_com_util::ConvertBSTRToString((_bstr_t)var));
    }
    else
    {
     Alldata.date.push_back(" ");
    }
    var = m_precord->GetCollect("Money");
    if (var.vt != VT_NULL)
    {
     Alldata.money.push_back(_com_util::ConvertBSTRToString((_bstr_t)var));
    }
    else
    {
     Alldata.money.push_back(" ");
    }
    m_precord->MoveNext();
 
   }
   
  }
 
 m_precord->Close();
 }
 catch (_com_error* e)
 {
  AfxMessageBox(e->Description());
 }
}

用ADO操作数据库的方法步骤

学习ADO时总结的一些经验     用ADO操作数据库的方法步骤   ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr...
  • gongluck93
  • gongluck93
  • 2016年09月19日 10:33
  • 2697

Windows下C++访问数据库(ADO)

C++利用ADO访问数据库还是比较方便的,我参考网上其它资料把ADO到一个类中,这样调用起来会更加的方便 这个类单线程访问数据库没有问题,提供了查询、增加、删除和修改的接口。 并行访问的话会有...
  • luke2834
  • luke2834
  • 2015年08月19日 12:07
  • 1824

C++ ADO方式连接mysql数据库

对于软件开发其实说白了就是在不停地和数据打交道, 所以数据库的操作是必不可少的, 接下来介绍VC开发中利用ADO建立ODBC数据源来访问MySQL数据库.        从我接触的数据库编程方式来说,...
  • lbcab
  • lbcab
  • 2016年05月06日 10:02
  • 4070

VC+ADO+多线程高效、安全的读写数据库

一、问题介绍项目需要实时获取并处理40路相机的现场图像,并将处理结果写入到数据库,采用的方案是使用多线程技术,创建40个工作者线程,每个线程建立一个数据库连接。本文仅将项目中遇到的问题以及解决方法做些...
  • HolaMirai
  • HolaMirai
  • 2016年09月05日 16:31
  • 2288

ADO方式连接数据库

ADO方式连接数据库分为如下步骤: 1.ADO对象的导入 在使用ADO技术时需要导入一个ADO动态链接库msado15.dll。该动态库位于系统盘下的"Program Files\Common Fil...
  • hola_f
  • hola_f
  • 2016年08月03日 16:32
  • 2861

在VS2010下MFC采用ADO方式连接ACCESS数据库(详细过程)

第一步:首先建立基于对话框的MFC应用程序Library,然后添加一个用户登录界面如图: 并建立此对话框的类LoginDlg ,在类中新建两个变量CString m_strName; ...
  • u012816020
  • u012816020
  • 2015年06月20日 16:33
  • 1817

Delphi ADO数据操作封装类

{ 将数据集操作方面的东西全部封装成一个单独的类 TcustomAdoDataSet是TadoQuery、TadoTable、TadoDataSet、TadoCommand的公共祖先类 应...
  • wozengcong
  • wozengcong
  • 2013年12月30日 12:06
  • 1266

Delphi多线程下的ADO编程

前言: 几个月前接到一个任务:将一后台程序访问数据库的方式从BDE改为ADO,原因是由于业务量的增加,通过BDE不论是向数据库写入数据还是从数据库中读出数据的速度都变得无法忍受,大家都知道ADO在数...
  • youthon
  • youthon
  • 2013年05月06日 16:13
  • 3121

C++使用ADO连接MySql数据库

1.数据库技术发展 ODBC->DAO->RDO->ADOOLE DB   2.ADO中包含了七个对象成员          Connection用于管理数据库的连接          Co...
  • u011337769
  • u011337769
  • 2017年04月12日 19:00
  • 524

ADO数据库编程详解(C++)----初级入门篇

一、概述         ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过...
  • MingoJiang
  • MingoJiang
  • 2013年01月22日 22:40
  • 15897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ADO操作数据库
举报原因:
原因补充:

(最多只允许输入30个字)