vc++6.0用ADO技术连接数据库的问题

麻烦帮我分析一下下面这段代码标//的地方,说明一下是什么意思或完成什么样的操作.谢谢!classLRunSql{public:LRunSql;~LRunSql();boo... 麻烦帮我分析一下下面这段代码标//的地方,说明一下是什么意思或完成什么样的操作.谢谢!
class LRunSql
{
public:
LRunSql;
~LRunSql();
bool RunSQL(CString sql) //用CDatabase的Execute方法的返回值给m_recordset变量赋值
{ _bstr_t sql_=sql;
try{
m_recordset=m_database->Execute(sql_,NULL,adCmdText);
}
catch(_com_error& e)
{
ErrorsPtr pErrors=m_database->GetErrors();
if (pErrors->GetCount()==0)
{

afxDump<<e.ErrorMessage();
}
else
{
for (int i=0;i<pErrors->GetCount();i++)
{
_bstr_t desc=pErrors->GetItem((long)i)->GetDescription();
afxDump<<(char*)desc; //???
}
}
return false;

}
return true;

}
bool CheckSQLResult(CString sql); //此方法用来检查RunSQL方法是否执行成功
{
if(!this->RunSQL(sql))
return false;
else
{
if(!this->m_recordset->adoEOF) //???
return true;
else
return false;
}
return true;
}
public:
static _ConnectionPtr m_database;

static bool RollbackTrans();
static bool CommitTrans();
static bool BeginTrans()
{
return (!FAILED(m_database->BeginTrans())); //???

}
static bool Close();
static bool InitConnectPtr()
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
if(FAILED(m_database.CreateInstance(__uuidof(Connection))))
return false;
if(ConnectDataBase()==false)
{
::Sleep(1000); //???
if(ConnectDataBase()==false)
{
MessageBox(NULL,"系统试图自动为您配置ODBC,但由于一些原因没有完成,请手工配置!","系统提示",MB_OK|MB_ICONSTOP);
return false;
}
}
return true;
}
static bool ConnectDataBase() //此方法用来建立到数据库的连接 {
try{
m_database->Open(L"现代物流","","",-1);
}
catch(...)
{
::ShellExecute(NULL,"open","AutoConfig.exe",NULL,NULL,SW_HIDE); //???
return false;
}
return true;
}
_RecordsetPtr m_recordset;
};
展开
 我来答
donaroo
2008-05-17 · TA获得超过1365个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:638万
展开全部
麻烦帮我分析一下下面这段代码标//的地方,说明一下是什么意思或完成什么样的操作.谢谢!
class LRunSql
{
public:
LRunSql;
~LRunSql();
bool RunSQL(CString sql) //执行sql语句,如果是查询的话结果会保存在m_recordset这个变量中
{ _bstr_t sql_=sql;
try{
m_recordset=m_database->Execute(sql_,NULL,adCmdText);
}
catch(_com_error& e)
{
ErrorsPtr pErrors=m_database->GetErrors();
if (pErrors->GetCount()==0)
{

afxDump<<e.ErrorMessage();
}
else
{
for (int i=0;i<pErrors->GetCount();i++)
{
_bstr_t desc=pErrors->GetItem((long)i)->GetDescription();
afxDump<<(char*)desc; //记录调试信息
}
}
return false;

}
return true;

}
bool CheckSQLResult(CString sql); //此方法用来检查RunSQL方法是否执行成功
{
if(!this->RunSQL(sql))
return false;
else
{
if(!this->m_recordset->adoEOF) //判断是否到了记录集的末尾
return true;
else
return false;
}
return true;
}
public:
static _ConnectionPtr m_database;

static bool RollbackTrans();
static bool CommitTrans();
static bool BeginTrans()
{
return (!FAILED(m_database->BeginTrans())); //开始事务处理

}
static bool Close();
static bool InitConnectPtr()
{
::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
if(FAILED(m_database.CreateInstance(__uuidof(Connection))))
return false;
if(ConnectDataBase()==false)
{
::Sleep(1000); //连接数据库失败后暂停一秒再次连接
if(ConnectDataBase()==false)
{
MessageBox(NULL,"系统试图自动为您配置ODBC,但由于一些原因没有完成,请手工配置!","系统提示",MB_OK|MB_ICONSTOP);
return false;
}
}
return true;
}
static bool ConnectDataBase() //此方法用来建立到数据库的连接 {
try{
m_database->Open(L"现代物流","","",-1);
}
catch(...)
{
::ShellExecute(NULL,"open","AutoConfig.exe",NULL,NULL,SW_HIDE); //如果连接出现异常,则调用autoconfig.exe,应该是数据库参数设置的程序吧
return false;
}
return true;
}
_RecordsetPtr m_recordset;
};
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式