您的位置:首页 > 数据库

ADO操作数据库

2015-07-07 22:16 281 查看
#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());

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: