我的应用 程序,数据库端是ORACLE,前端应用PB开发客户端程序。想实现当一个表中记录有增加时,自动弹出提示信息。
怎样做,什么思路。越详细越好。谢谢!!!。分不够可另开贴追加
------解决方案--------------------
1.用sock通知
2.不停刷新dw
------解决方案--------------------
一般来说,都是在客户端设置定时器轮询数据库来实现的,但这种效率很差,并且对数据库也有负担。
有一种方法则是利用数据库中间件来实现,客户端程序不直接和数据库打交道,而是通过这个数据库中间件来实现数据的读取修改等操作。这样当某个客户端对数据库操作时,就是可以直接发送通知消息给其他的客户端。
还有一种方法,则是用数据库监视器来监视数据库的行为,并进行分析,根据分析结果分发消息给客户端。
最后,就是主动数据库了,不过好象还没有具体的应用产品。
------解决方案--------------------
1。数据库轮询:在timer事件中用select count(0) from tb 查询条数据,判断是否增加。
2.服务器端通过Socket给客户端发消息。
两种其实开销都比较大,楼主应该慎用
------解决方案--------------------
我们目前是用winsock实现的,当数据更新后,通知其它在线的客户端进行刷新
前提是需要记录客户端的登陆的IP等 信息
------解决方案--------------------
timer 事件,不过这东西有点耗资源
------解决方案--------------------
在客户端使用定时器即可,每隔N秒刷新一次.
------解决方案--------------------
1、新建表,可以和那张信息表做个关联,这个新建表最起码有这几个字段,主键字段、标志(记录用户是否已经查阅信息,默认值0),用户,外键(和信息表的连接)
2、信息表中每增加一条新纪录时在insert触发器中自动向新建表中插数据,有多少个用户就插多少条数据,标志(0)和外键的信息都相同
3、在客户端用timer事件,根据不同的用户查询最新的标志是0的记录,如果有记录,根据新表外键连接信息表显示相关信息,同时在弹出messagebox后根据新表主键更新这条记录的标志为1,这样就说明用户已经得到信息了,就不会再弹出messagebox
4、可以再做一个信息的查询列表,供用户查询
------解决方案--------------------
加一个一个字段的表记录主表数据行数只需一条记录,主表加触发器维护辅助表记录,客户端轮询这个辅助表系统开销可以降低
------解决方案--------------------
我这还有另外一个思路:
如果服务器是windows的,可以用任务计划试试
------解决方案--------------------
必须关联数据库,这样无论如何都会造成数据库资源的损失,因为需要实时监测,要是能分发就行了.
------解决方案--------------------
必须得通过扫描数据库,以前我
也遇到同样的问题。想了好久最后也得通过这样笨的方法
timer事件
------解决方案--------------------
呵呵 我也觉得只能用TIMER事件
------解决方案--------------------
现在像这种功能很多都采用的是winsock。但是问题也是比较多,还有没有更好的方法暂时不知。期待高手。。。
------解决方案--------------------
我的方法:
1。新建个表 a,用来保存指定表的更新情况。
2。指定的表做了update or insert后把做过修改的数据放入 表a 还是修改的时间。
3。程序里用timer or 线程 一段时间后去查看表a 是否有修改时间超过本地保存的修改时间
4。如果有数据,可以retrieve 也可以手动 insert or 修改 dw里的值,再把本地的修改时间改成取出 数据的时间.
前面3步呢主要是减短查表的时间,对于表a 你可以在数据库里也个触发一天清一次
------解决方案--------------------
winsock
------解决方案--------------------
这个帖子在线等了快一个月了啊
------解决方案--------------------
数据库有个功能也是广播,不知道有什么用处