各位大虾,本人菜鸟,帮我找找这个错误吧,是关于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; }
请各位大虾多多指点啊,整了两天,人都烦死了