C++连接数据库二

#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();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值