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;
}; 展开
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;
}; 展开
展开全部
麻烦帮我分析一下下面这段代码标//的地方,说明一下是什么意思或完成什么样的操作.谢谢!
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;
};
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;
};
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询