dbexpress+mysql 运行一段时间后出现灾难性故障

hy0754 2009-09-20 02:15:29
一个com方法 在连续调用一段时间后会出现灾难性故障,是怎么回事?
void TXXXX::Query(AnsiString sql, VARIANT *Data)
{
PublicQuery->Close();
PublicQuery->CommandText = sql;
PublicQuery->Open();
V2V(&(PublicQuery->Data), Data);
}
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hy0754 2009-09-21
  • 打赏
  • 举报
回复
只要在每次调用方法前连接一次数据库就没问题,看来问题出现在数据库连接上
使用的连接库是dbxmysql50.dll
当初为了让其能调用储存过程对其进行过修过:
connect---->
连接方式
FPConnection := _mysql_real_connect(fpmysql, pchar(Hostname), UserName, Password, ServerName, Port, nil, 131072);

close------>
释放时
while _mysql_next_result(SQLHandle) = 0 do
begin
FPSQLResult := _mysql_store_result(SQLHandle);
if FPSQLResult <> nil then _mysql_free_result(FPSQLResult);
end;
我来看看CB 2009-09-20
  • 打赏
  • 举报
回复
详细代码?
hy0754 2009-09-20
  • 打赏
  • 举报
回复
哎,TSQLQuery+TDataSetProvider 久了还是退出了
hy0754 2009-09-20
  • 打赏
  • 举报
回复
原先使用组件:TSQLConnection+TSQLClientDataSet 捕捉到异常:灾难性故障,scktsrvr.exe退出
改用:TSQLConnection+TSQLQuery+TDataSetProvider 后捕捉到的异常是EAccessViolation和Unable to execute Query,但scktsrvr.exe不会退出,
hy0754 2009-09-20
  • 打赏
  • 举报
回复
STDMETHODIMP TXXXX::SQLQuery(BSTR SQL, int* Result,
VARIANT* Data)
{
try
{
m_DataModule->Query(SQL, Data);
*Result = 1;
}
catch(Exception &E)
{
*Result = 0;
return S_FALSE;
}
return S_OK;
}
void TXXDataModule::Query(AnsiString sql, VARIANT *Data)
{
PublicQuery->Close();
PublicQuery->CommandText = sql;
PublicQuery->Open();
V2V(&(PublicQuery->Data), Data);
}
void V2V(OleVariant *vFrom, VARIANT *vTo)
{
V2V(reinterpret_cast<Variant *>(vFrom), vTo);
}
void V2V(Variant *vFrom, VARIANT *vTo)
{
VariantClear(vTo);
VariantCopy(vTo, reinterpret_cast<VARIANTARG*>(vFrom));
}
客户端通过SocketConnection调用SQLQuery方法,一开始正常,但一段时间后就要出现问题

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧