为什么我的ADO运行不起来,请高手指点一二(在线等))谢谢
本人刚刚接触VC下的ADO, 初步写了以下程序,运行结果,是说某段内存不可读
请高手指点,小弟不盛感激 !!! 谢谢!!
/数据库ADO 初始化类!
// ADOConn.cpp: implementation of the ADOConn class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADO53.h"
#include "ADOConn.h"
省掉VC自动产生的程序若干
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
void ADOConn::OnInitDBConnect()
{
::CoUninitialize();
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open("Provider=SQLOLEDB;SERVER=WNJF_DATASERVER;DATABASE=djk;UID=sa;PWD=3906663","","",-1);
}
catch(_com_error e)
{AfxMessageBox(e.Description());
}
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if (m_pConnection==NULL)
{
OnInitDBConnect();
}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{ AfxMessageBox(e.Description());}
AfxMessageBox("3");
return m_pRecordset;
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if (m_pConnection==NULL)
OnInitDBConnect();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{AfxMessageBox(e.Description());
return false;
}
}
void ADOConn::ExitConnect()
{
if (m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();
}
//数据库SERV库类
// SERV.cpp: implementation of the SERV class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ADO53.h"
#include "SERV.h"
省掉VC自动产生的程序若干
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SERV::SERV()
{
m_acc_nbr="1728";
m_serv_name="noname";
m_zke="0.00";
}
SERV::~SERV()
{
}
void SERV::GetData(CString Gacc_nbr)/*这段比较重要,可能错误代码在此
{
ADOConn m_ADOConn;
m_ADOConn.OnInitDBConnect();
_bstr_t SQL;
SQL="select * from j200503 where acc_nbr="+Gacc_nbr;
_RecordsetPtr Myset;
Myset=m_ADOConn.GetRecordSet(SQL);
AfxMessageBox(Gacc_nbr);
//REUTNR value
if (Myset->adoEOF==1)
{
AfxMessageBox(" 没此号话记录");
SERV();
}
else
{
//AfxMessageBox("6");
m_acc_nbr=Gacc_nbr;
m_serv_name=(LPCTSTR)(_bstr_t)Myset->GetCollect("serv_name");
m_zke=(LPCTSTR)(_bstr_t)Myset->GetCollect("zke");
}
m_ADOConn.ExitConnect();
AfxMessageBox("5");
}
/ DIALOG 类! 里面有三个EDIT控件 及两个按钮!
#include "stdafx.h"
#include "ADO53.h"
#include "ADO53Dlg.h"
省掉VC自动产生的程序若干
/////////////////////////////////////////////////////////////////////////////
/为啥我的ADO会出现 报错,是一些内存方面的,请各位高手帮帮忙,不盛感激!!!!
online ..waiting..
************************888省略所有VC自动产生的代码若干*********************
void CADO53Dlg::OnButton1() /**查找按钮,当CLICK事件发生,执行以下代码!
{
UpdateData(true);
if (m_phone=="0")
AfxMessageBox("请输入电话号码");
djk.GetData(m_phone);
m_name=djk.m_serv_name;
m_phone=djk.m_acc_nbr;
m_zke=djk.m_zke;
UpdateData(false);
}
void CADO53Dlg::OnButton2() /*退出应用程序
{
exit(0);
}