读取SQL数据库总出现错误
读取SQL数据库总出现异常
有两台电脑,程序在其中一台上运行,数据库在另外一台上。
异常位置:
try
{
strSql_water.Format(_T("select * from water_level_monitoring where id=(select max(id) from water_level_monitoring)-5"));
GetDocument()->m_dbManager.ExecuteSql(strSql_water);
_variant_t deep;
deep.vt=VT_R8; //VT_EMPTY
deep.dblVal = GetDocument()->m_dbManager.m_Recordset->GetCollect(_variant_t("water_level")); //总是在GetCollect()函数出现异常
waterlevel=(double)deep;
GetDocument()->m_dbManager.ReleaseSQL();
}
catch(CException* e)
{
CString errStr = "";
e->GetErrorMessage(errStr.GetBuffer(), 100);
AfxMessageBox(errStr);
}
其中ExecuteSql()函数如下:
bool CCDB::ExecuteSql(CString Sql)
{
try
{
if (m_Connection != NULL)
{
m_Recordset->Open((_variant_t)Sql, m_Connection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
//m_Recordsettemp = m_Recordset;
return true;
}
else
{
AfxMessageBox(_T("没有打开数据库!"));
return false;
}
}
catch (_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
return false;
}
}
其中ReleaseSQL()函数如下:
void CCDB::ReleaseSQL()
{
if(m_Recordset != NULL)
m_Recordset->Close(); } 在Close()函数中异常不断。
}
请给位牛人看看,帮小弟支个招。谢谢啊
------解决方案--------------------
http://blog.csdn.net/zyq5945/archive/2010/05/12/5581453.aspx
变量转换看上面的连接。
异常捕获改成这样就知道错误了。
有两台电脑,程序在其中一台上运行,数据库在另外一台上。
异常位置:
try
{
strSql_water.Format(_T("select * from water_level_monitoring where id=(select max(id) from water_level_monitoring)-5"));
GetDocument()->m_dbManager.ExecuteSql(strSql_water);
_variant_t deep;
deep.vt=VT_R8; //VT_EMPTY
deep.dblVal = GetDocument()->m_dbManager.m_Recordset->GetCollect(_variant_t("water_level")); //总是在GetCollect()函数出现异常
waterlevel=(double)deep;
GetDocument()->m_dbManager.ReleaseSQL();
}
catch(CException* e)
{
CString errStr = "";
e->GetErrorMessage(errStr.GetBuffer(), 100);
AfxMessageBox(errStr);
}
其中ExecuteSql()函数如下:
bool CCDB::ExecuteSql(CString Sql)
{
try
{
if (m_Connection != NULL)
{
m_Recordset->Open((_variant_t)Sql, m_Connection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
//m_Recordsettemp = m_Recordset;
return true;
}
else
{
AfxMessageBox(_T("没有打开数据库!"));
return false;
}
}
catch (_com_error &e)
{
AfxMessageBox(e.ErrorMessage());
return false;
}
}
其中ReleaseSQL()函数如下:
void CCDB::ReleaseSQL()
{
if(m_Recordset != NULL)
m_Recordset->Close(); } 在Close()函数中异常不断。
}
请给位牛人看看,帮小弟支个招。谢谢啊
------解决方案--------------------
http://blog.csdn.net/zyq5945/archive/2010/05/12/5581453.aspx
变量转换看上面的连接。
异常捕获改成这样就知道错误了。
- C/C++ code
try { //你的ADO代码 } catch (_com_error& e) { AfxMessageBox(e.Description()); }