PB中检测数据库是否连接

springfun 2008-09-22 02:50:55
在PB中如何检测数据库的状态,就是在一个输入框中输入数据库名称,点击一个按钮检测输入的数据库的状态,看看他是不是处于连接状态
...全文
1323 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q1277516668 2011-01-24
  • 打赏
  • 举报
回复
if jlxlx_trans.database = '' or isnull(jlxlx_trans.database) then//查看事物是否连接
// Profile ht_jlxlx
jlxlx_trans.DBMS = "MSS Microsoft SQL Server"
jlxlx_trans.Database = "ht_jlxlx"
jlxlx_trans.ServerName = "."
jlxlx_trans.LogId = "sa"
jlxlx_trans.AutoCommit = False
jlxlx_trans.DBParm = ""
connect using jlxlx_trans;
if jlxlx_trans.sqlcode <> 0 then//离线事物
messagebox('系统提示',string(jlxlx_trans.sqlcode)+'|'+jlxlx_trans.sqlerrtext)//SQLErrText
return
//else
// messagebox('系统提示', '成功!' )
end if
end if
sixty3 2008-09-28
  • 打赏
  • 举报
回复
楼主只需判断是否连接 那就直接写
if sqlca.sqlcode = 0 then
messagebox("提示","连接成功")
else
messagebox("提示","连接失败")
end if
buffon1260 2008-09-28
  • 打赏
  • 举报
回复
小弟是新手.学习下
kenshu 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kenshu 的回复:]
一般,根据实际数据库的不同,(sqlca.database)

由数据库中取SELECT时间出来,sqlca.sqlcode=0,就是连接了

sqlserver

select getdate() into :ld_temp;

oracle

select sysdate into :ld_temp from dual;

access

select now() into :ld_temp;

......
[/Quote]

一般用这种检测,是因为有机会之前是OK的,(也就是你之前CONNECT成功),现在不行了.
kenshu 2008-09-24
  • 打赏
  • 举报
回复
一般,根据实际数据库的不同,(sqlca.database)

由数据库中取SELECT时间出来,sqlca.sqlcode=0,就是连接了

sqlserver

select getdate() into :ld_temp;

oracle

select sysdate into :ld_temp from dual;

access

select now() into :ld_temp;

......
wangxun0997 2008-09-24
  • 打赏
  • 举报
回复
PB中的数据库是否连接,第一层(实际上)是针对事务的,也就是说事务是否连接的状态,换句话说也就是事务必须存在才有判断的可能,如果你连事务都不确定,那就先判断事务是否为NULL OBJECT,楼主的这种需求可能欠考虑,如果你却实不知道事务,却想直接查看数据库的连接,那你可以创建一个到MAster的事务,然后通过检索master.dbo.sysprocesses中的相关数据以确定你指定的数据库是否被你要查询的客户端、客户应用、网卡正连接调用中...
zlf19810306 2008-09-23
  • 打赏
  • 举报
回复
仔细看看帮助,DBHandle() 并不能确定数据库的连接是否存在和正确
wangxun0997 2008-09-22
  • 打赏
  • 举报
回复
可使用PB中事务函数DBHandle() 如返有效的uLong值说明数据库处于连接状态。
编程夜猫 2008-09-22
  • 打赏
  • 举报
回复
看样子,要解决楼主的问题,只能用SQLReturnData String DBMS-specific information.这个了。
一般写PB程序是不需要判断事务的连接状态的,Transaction object也没有相应的状态标起,不象ADO有state状态标识。
lllyyymmm 2008-09-22
  • 打赏
  • 举报
回复
不管怎么样,还是要先了解一下,你是哪种数据库,因为不同数据库写法不一样。
jaychensusu 2008-09-22
  • 打赏
  • 举报
回复
认同7楼 JF
gulu523 2008-09-22
  • 打赏
  • 举报
回复
崩溃掉。
jlwei888 2008-09-22
  • 打赏
  • 举报
回复
你俩的表达能力啊!唉......................
springfun 2008-09-22
  • 打赏
  • 举报
回复
不好意思,我没有表述清楚,小弟新学PB,请见谅
我的问题不是判断输入的数据库是否可以连接,而是检测它目前的状态,是处于连接状态 还是断开状态,
leio 2008-09-22
  • 打赏
  • 举报
回复
楼主表述问题的能力真的是......

猜测楼主需要的功能是:
在程序中由用户输入一个数据库的名称(SQLSERVER),程序自动判断该数据库是否可以连接。

窗口上放一个单行编辑框(sle_1),用于输入数据库名称
一个按钮(cb_1),用于测试连接。
按钮代码(下面的代码是用SQLCA进行连接测试,当然也可以新建一个事务用于连接测试。)


string ls_database
ls_database = sle_1.text

SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = ls_database
SQLCA.LogID = 'sa' //数据库帐号名
SQLCA.LogPass = '1234' //数据库密码
SQLCA.ServerName = '192.168.1.10' //数据库服务器
SQLCA.AutoCommit = False

Connect using SQLCA;
If SQLCA.SQLCode <> 0 Then
MessageBox ("连接SQL SERVER数据库失败!", "连接SQL SERVER数据库('+ls_database+')失败~r~n~r~n错误信息如下:"+&
"~r~n~r~n"+SQLCA.SQLErrText )
else
Messagebox ("连接成功!","连接成功!")
End If


jlwei888 2008-09-22
  • 打赏
  • 举报
回复
代码代给写了吗!增加事务了那就再增加一个判断了!
无非就是一个相同或不相同的问题!有什么用啊!

直接显示出事务的数据库属性就行啊!


不知你们俩还想怎么样!
springfun 2008-09-22
  • 打赏
  • 举报
回复
我是又重新开启了一个事务,就是new_trans,开启的时候它的DataBase没有设置,这样是不是可以用来检测输入的数据库呢,是不是我的这个想法没有解决办法啊
jlwei888 2008-09-22
  • 打赏
  • 举报
回复
string s_db
s_db = trim(sle_1.text)

if s_db = sqlca.database then
..

写错了!
你的概念不对,sqlca连上master ,就不用再检测其它数据库了!
一个事务只连一个数据库!除非新建事务对象进行连接!


springfun 2008-09-22
  • 打赏
  • 举报
回复
sqlca事物已经处于打开状态,连上了master数据库,但是如何检测输入的数据库是否处于连接状态呢,楼上的s_dm 代表是什么呢?
jlwei888 2008-09-22
  • 打赏
  • 举报
回复
好像有人问过这个问题!


sqlca 先连接


string s_db
s_db = trim(sle_1.text)

if s_dm = sqlca.database then
..

加载更多回复(1)

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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