多进程调用操作oracle数据库的DLL出错

versed8 2010-07-24 02:42:58
各位前辈:本人编写了一个操作oracle数据库的DLL程序,用ADO连接时,多个进程调用,出现错误,进程自己无法结束退出,代码如下:
CTime t=CTime::GetCurrentTime();
COleDateTime Time=(time_t)t.GetTime();
cardInitializationInf.InitializationLab="1";

TRY{
static CADODatabase *g_pDb;
CString strConnection="Provider=OraOLEDB.Oracle.1;Password=111;Persist Security Info=True;User ID=card;Data Source=xxzx";
g_pDb = new CADODatabase;
strtemp.Format("连接数据库 [%s]",strConnection);
WriteLog(strtemp);
if (!g_pDb->Open(strConnection)) {
WriteLog("连接数据库失败!");
return 800;
}
CADORecordset* pRs = new CADORecordset(g_pDb);
CString TempSql;
WriteLog("打开数据库表 [AZ03]");
if(!pRs->Open((LPCTSTR)"SELECT * FROM AZ03"))
{
WriteLog("打开数据库表 [AZ03] 失败!");
return 801;
}
dntm=CTime::GetCurrentTime();
str=dntm.Format(("%Y%m%d"));
pRs->AddNew();

//IP
AgenciesInfCard.IPstr="";
WSADATA wsadata;
WORD dwVersionRequested;
int err;
err=WSAStartup(dwVersionRequested,&wsadata);
char hostname[128];
if(gethostname(hostname,128)==0)
{

struct hostent *pHost = gethostbyname(hostname);
for (int i = 0; pHost != NULL && pHost->h_addr_list[i] != NULL; i++)
{
AgenciesInfCard.IPstr+=inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]);
}
WSACleanup();
}
str.Format("IP: %s",AgenciesInfCard.IPstr);
WriteLog(str);

strtemp=LW_number.Left(24);
pRs->SetFieldValue("AAZ001",strtemp);//唯一码
pRs->SetFieldValue("AAZ002",LW_ATR);//ATR
pRs->SetFieldValue("AAZ032",AgenciesInfCard.IPstr);//IP

pRs->SetFieldValue("AAZ004",AgenciesInfCard.Cardtime);//发卡时间
pRs->SetFieldValue("AAZ005",AgenciesInfCard.CardValid);//卡有效期
str="5";
pRs->SetFieldValue("AAZ006",str);//卡状态
pRs->Update();
pRs->Close();
WriteLog("写库成功!");
delete pRs;
delete g_pDb;
}CATCH(CDBException,E)
{
strtemp.Format("数据库查找出现系统级别冲突错误!2");
WriteLog(strtemp);
return -999;
}

END_CATCH
以上代码中的变量都已正常赋值

在用ODBC连接时,每次运行主程序时,累计到第四次调用出错,前三次正常。代码如下:
//回写数据库
CTime t=CTime::GetCurrentTime();
COleDateTime Time=(time_t)t.GetTime();
cardInitializationInf.InitializationLab="1";

TRY{

CDatabase p_db;

CString strConn,strLog;
int iRet;
strConn.Format("DSN=%s;UID=%s;PWD=%s",DSN_NAME,USERID,PASSWORD);
iRet=p_db.OpenEx(strConn);
//iRet=p_db.OpenEx("DSN=sxdbzzx");
if(iRet==0)
{
strLog.Format(" 打开数据库失败!! DSN=xxzx ");WriteLog(strLog);
return -2;
}

dntm=CTime::GetCurrentTime();
str=dntm.Format(("%Y%m%d"));
//IP
AgenciesInfCard.IPstr="";
WSADATA wsadata;
WORD dwVersionRequested;
int err;
err=WSAStartup(dwVersionRequested,&wsadata);
char hostname[128];
if(gethostname(hostname,128)==0)
{

struct hostent *pHost = gethostbyname(hostname);
for (int i = 0; pHost != NULL && pHost->h_addr_list[i] != NULL; i++)
{
AgenciesInfCard.IPstr+=inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]);
}
WSACleanup();
}
str.Format("IP: %s",AgenciesInfCard.IPstr);
WriteLog(str);
strtemp=LW_number.Left(24);
str="5";
//更新数据库
CString strSQL;
strSQL.Format("insert into AZ03(AAZ001,AAZ002,AAZ032,AAZ004,AAZ005,AAZ006) values('%s','%s','%s','%s','%s','%s')",strtemp,LW_ATR,AgenciesInfCard.IPstr,AgenciesInfCard.Cardtime,AgenciesInfCard.CardValid,str);
p_db.ExecuteSQL(strSQL); // 执行修改命令
p_db.Close();


}CATCH(CDBException,E)
{
strtemp.Format("数据库查找出现系统级别冲突错误!2");
WriteLog(strtemp);
return -999;
}

END_CATCH
错误提示如下:
1、Error opening TCP/IP Command Socket
2、Impossible to init multichip communication

请各位前辈指点错误原因或如何避免出错
...全文
129 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
versed8 2010-07-25
  • 打赏
  • 举报
回复
来人给提个解决办法啊!
versed8 2010-07-24
  • 打赏
  • 举报
回复
前辈们,快来帮个忙啊!我的饭碗帮您们的了
内容概要:本文围绕“可再生能源发电与电动汽车的协同调度策略”展开硕士论文级别的研究与复现工作,基于Matlab平台构建了高比例可再生能源接入背景下电力系统与电动汽车(EV)之间的多时间尺度协同优化模型。研究重点在于应对风光发电不确定性,充分利用电动汽车作为移动储能单元的灵活充放电能力(含V2G技术),实现电网削峰填谷、提升新能源消纳效率与系统运行经济性。文中综合考虑了异质电动车集群特性、V2G过程中的损耗约束以及随机因素影响,采用如深度确定性策略梯度(DDPG)强化学习、混合整数线性规划(MILP)等先进优化算法进行求解,并通过基准模型对比验证了所提自适应调度策略在提升电网稳定性、降低运行成本方面的有效性。; 适合人群:具备一定电力系统基础知识、优化理论背景及Matlab编程能力的研究生、科研人员,以及从事新能源并网、智能电网调度、车网互动(V2G)等方向的工程技术人员。; 使用场景及目标:①学习并复现已发表高水平硕士论文中的协同调度建模方法与仿真流程;②掌握将深度强化学习(如DDPG)应用于虚拟电厂、电动汽车集群调度等复杂非线性决策问题的技术路径;③为开展新能源消纳、需求侧响应、微电网优化运行等相关课题的研究提供可复用的代码框架与创新思路参考。; 阅读建议:建议读者结合文中提供的完整Matlab代码与技术文档,深入理解模型构建逻辑、算法实现细节与参数设置依据,优先在Simulink/Matlab环境中运行并调试仿真案例,通过调整场景参数与算法超参,探究不同策略对调度效果的影响,从而深化对协同调度机制与智能优化方法应用的理解。

15,446

社区成员

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

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