各位大虾,本人菜鸟,帮我找找这个错误吧,是关于VC连接SQL Server数据库的
程序是弄出来了,但是运行的时候总是有异常。
程序代码:
#include "StdAfx.h"
#include "ADOConn.h"
#include <iostream>
using namespace std;
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL); //初始化OLE/COM环境,为访问ADO接口做准备
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADO.Connection"); //创建Connection对象
_bstr_t strConnection="driver={sql server};server=(local);uid=sa;pwd=123;database=shopping";
hr = m_pConnection->Open(strConnection,"","",adModeUnknown);
if(SUCCEEDED(hr))
{
cout<<"成功连接数据库"<<endl;
}
}
catch(_com_error e) //捕捉异常
{
cout<<"连接数据库失败"<<endl;
}
}
_RecordsetPtr & ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
//连接数据库,如果Connection对象为空,重新连接数据库
if(m_pConnection == NULL)
OnInitADOConn();
//创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
cout<<e.Description()<<endl;
}
//返回记录集
return m_pRecordset;
}
bool ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//是否已经连接数据库
if(m_pConnection == NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
cout<<e.Description()<<endl;
return false;
}
}
void ADOConn::ExitConnection()
{
//关闭记录集和连接
if(m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
::CoInitialize(NULL); //关闭ole/com库,释放资源
}
这是我自己添加的连接SQL Server的类,在下面的主函数中进行调用
程序代码:
#include "stdafx.h"
#include "ADOConn.h"
#include <iostream>
using namespace std;
int main()
{
ADOConn ado;
_bstr_t bstrSQL;
//ado.AdoConn();
ado.OnInitADOConn();
//ado.GetRecordSet(bstrSQL);
//ado.ExecuteSQL(bstrSQL);
//ADOConn ExitConnection();
return 0;
}
请各位大虾多多指点啊,整了两天,人都烦死了







