您的位置:首页 > 编程语言 > C语言/C++

C++连接数据库二

2016-05-02 11:06 411 查看
#include "sqlServer.h"

#include <iostream>

#include<iomanip>

#include <string>

using namespace std;

/*

数据库连接步骤:

(1)初始化com组件 CoInitialize()

 (2)实例化连接对象

 (3)建立连接

 (4)实例化数据集

 (5)获取数据

*/

SqlConnection::SqlConnection()

{

// m_pConnection=NULL;

// m_pRecordset=NULL;
CoInitialize(NULL);    //必须先初始化com组件

}

SqlConnection::~SqlConnection()

{

}

void SqlConnection::OnInitConn()

{

// HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection));
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");    
if(FAILED(hr))
{
cout<<"_ConnectionPtr对象指针实例化失败"<<endl;
return;
}
else
try
{

// _bstr_t strConnect="Driver={sql server};server=127.0.0.1,1433;uid=sa;pwd=013605;database=Stu;";

// m_pConnection->Open(strConnect,"","",adModeUnknown);    //打开与数据库的连接
//创建connection对象

// m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="Provider=SQLOLEDB;Initial Catalog=Stu;Data Source=127.0.0.1";

//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection->Open(strConnect,"sa","013605",adModeUnknown);
}
catch (_com_error& e)
{
cout<<e.Description()<<endl;
}

}

_RecordsetPtr& SqlConnection::GetRecordSet(_bstr_t bstrSQL)

{
if(m_pConnection==NULL)
OnInitConn();
if(FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset ))))     //实例化数据集
{
cout<<"记录集对象指针实例化失败!"<<endl;
exit(0);

// return ;
}
try{

// m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset=m_pConnection->Execute(bstrSQL,NULL,adCmdText);
}catch(_com_error & e)
{
cout<<e.Description();
}
return m_pRecordset;

}

BOOL SqlConnection::ExecuteSQL(_bstr_t bstrSQL)

{
try
{
//是否已连接数据库
if(m_pConnection==NULL)
OnInitConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error& e)
{
e.Description();
return false;
}

}

void SqlConnection::ExitConnect()

{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
m_pRecordset->Release();
m_pConnection->Release();
//释放环境
::CoUninitialize();

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