现在的位置: 首页 > 综合 > 正文

ADO+Visual C++数据库连接和操作

2013年09月21日 ⁄ 综合 ⁄ 共 3000字 ⁄ 字号 评论关闭

ADO(ActiveX DataObjects)是微软公司推出的新一代数据库访问规范,使用简介强大,已经基本取代ODBC和DAO.

ADO对象:

1,连接对象 Connection 用于连接数据源,以及处理一些命令和事物。在使用ADO访问数据库之前,必须先创建一个Connection对象,通过它打开与数据库的连接

2,命令对象 Command 用于执行传递给数据源的命令。

3,记录集对象 Recordset 可操作来自数据源的数据,通过该对象可对几乎所有的数据进行操作。所有的Recordset都可以通过使用记录(行)和字段(列)进行构造

4,参数对象 Parameter代表参数和机遇参数化的Command的参数信息。

封装的ado操作头文件:

#pragma once

#import"c:\program files\common files\system\ado\msado15.dll"\

       no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")

class ADOConn

{

public:

       ADOConn(void);

       ~ADOConn(void);

       _ConnectionPtr m_pConnection;//添加指向Connection的指针

       _RecordsetPtr m_pRecordSet; ;//添加指向Recordset的指针

 

 

       void OnnitADOConn(void);//初始化数据库连接

       void ExitConnect(void); //退出数据库连接

       _RecordsetPtr &GetRecordSet(_bstr_tbstrSQL);//获取数据源的记录集

       BOOL ExecuteSQL(_bstr_t bstrSQL);//执行传入的数据库SQL命令

};

封装的ado操作源文件:

#include"StdAfx.h"

#include"ADOConn.h"

 

ADOConn::ADOConn(void)

{

}

 

ADOConn::~ADOConn(void)

{

}

voidADOConn::OnnitADOConn(void)

{

       ::CoInitialize(NULL);//初始化OLE/COM环境

       try

       {

              m_pConnection.CreateInstance("ADODB.Connection");

              Cstring connectionstr="Driver={SQLServer};Server=(local);Database=PersonalInfoManageSystem;UID=sa;PWD=123456";//设置连接字符串

              m_pConnection->Open((_bstr_t)connectionstr,"","",adModeUnknown);

       }

       catch (_com_error e)//捕捉异常

       {

              AfxMessageBox(e.Description());//显示错误信息

             

       }

}

 

voidADOConn::ExitConnect(void)

{  

       m_pConnection->Close();

       ::CoUninitialize();

}

BOOLADOConn::ExecuteSQL(_bstr_t bstrSQL)

{

       _variant_t RecordsAffected;

       try

       {

              if (m_pConnection==NULL)

              {

                     OnnitADOConn();

              }

              m_pConnection->Execute(bstrSQL,NULL,adCmdText);

              return true;

       }

       catch (_com_error e)

       {

              e.Description();

              return false;

       }

}

 

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)

{

       try

       {

              if (m_pConnection==NULL)

              {

                     OnnitADOConn();

              }

              m_pRecordSet.CreateInstance(_uuidof(Recordset));

              m_pRecordSet->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

       }

       catch (_com_error e)

       {

              e.Description();

             

       }

       return m_pRecordSet;

}

运用该头文件和源文件从数据源中取数据,并显示在界面的listview中:

ADOConn m_ado;//定义ado连接对象

       int i=400;

       m_ado.OnnitADOConn();//初始化

       CString sql="select * from Dataorder by Frec desc " ;//设置sql命令

       _RecordsetPtr m_precord;

       m_precord=m_ado.GetRecordSet(_bstr_t(sql));//获取数据源查询的记录集

       while (m_ado.m_pRecordSet->adoEOF==0)//==0表示还有数据

       {

 

              CString s;

              s.Format("%d",i--);

              m_data.InsertItem(0,"");

              m_data.SetItemText(0,0,s);

              m_data.SetItemText(0,1,(char*)(_bstr_t)m_precord->GetCollect("Frec"));

              m_data.SetItemText(0,2,(char*)(_bstr_t)m_precord->GetCollect("Result"));

              m_precord->MoveNext();//获取下一条记录

       }

       m_ado.ExitConnect();//退出连接

抱歉!评论已关闭.