导航
  • 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

如何让PB判断是否断开数据库?(后台数据库为Oracle 10g)

rsy123 2008-01-09 11:40:57
环境:PowerBuilder10.0和Oracle 10g数据库
要求:由于我的程序需要长期运行,但是有时数据库会断开我的连接。因此我需要程序能够自动判断数据库是否断开连接,再自动连接。我是这么做的,在窗体的timing控件里加入以下语句,并设置时间间隔为1秒

try
select tel_8001 into :state from scott.TELE_UPDATE; //做select操作
finally
if re_connect(1)=1 then //re_connect是重新连接函数
sys_log("已经完成与数据库重新连接") //sys_log是自己编的打印信息函数
commit;
return

end if

end try

但是再实际运行中,我却发现PB的程序在不断的重新连接数据库(每隔1秒),请问如何做才能够准确判断数据库的连接状态,谢谢?

顺便附上连接的脚本(采用Oracle9i专用接口的连接方式 )
disconnect;
string ls_msg
SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
SQLCA.LogPass = "tiger"
SQLCA.ServerName = "hangang"
SQLCA.LogId = "sys"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectAs='SYSDBA'"
connect;
IF SQLca.sqlcode=-1 then
ls_msg='启动数据库失败...'+sqlca.sqlerrtext
messagebox("错误",ls_msg)
else
....
end if
...全文
193 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun1976 2008-01-10
if sqlca.dbcode>0 then return

string ls_msg
SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
SQLCA.LogPass = "tiger"
SQLCA.ServerName = "hangang"
SQLCA.LogId = "sys"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectAs='SYSDBA'"
connect;
IF SQLca.sqlcode=-1 then
ls_msg='启动数据库失败...'+sqlca.sqlerrtext
messagebox("错误",ls_msg)
else
....
end if
回复
jlwei888 2008-01-10
你 disconnect;了吗?
回复
rsy123 2008-01-10
让我试试
回复
kenshu 2008-01-10
long i
select 1 into :i from dual;
if sqlca.sqlcode = 0 then
return;
else
connect using sqlca;
end if
回复
发动态
发帖子
PowerBuilder
创建于2007-09-28

812

社区成员

PowerBuilder 相关问题讨论
申请成为版主
社区公告
暂无公告