首先我说一点:当服务器端执行添加,删除,插入操作的时候,常常会出错。这是可以将执行这些的地方放置try来捕获错误,并在服务器端处理,不使程序中止!
解决方案 »
- 主从表关联查询问题
- 我现在要做一个话务统计系统,要统计出某一时刻的通话数目,还要画出折线图,请问这个图应该怎么画?
- 怎么读取RGB的值并返回一个TColor对象
- 着急;怎么让MDI子窗口Showmodal出来的窗口不在任务栏产生图标
- 用FastReport如何实现让用户自己建立、保存打印模板?并且可让用户设置默认的打印模板?
- 查询日期类型的字段,SQL如何写
- 如何在A程序中访问B程序中另外一个列表框控件的文本内容?
- 关于edit显示的“小菜”问题
- 我要用SQL存储图象文件(bmp),客户端调用;考虑带宽,想进行压缩后传输,有什么好办法吗
- 怎样做选择目录的对话框
- 请问如何和mysql连接?
- DELPHI中怎样进行日期加一天的操作?
http://www.csdn.net/expert/topic/958/958838.xml?temp=.4206201
其中需要解决的问题之一。三层结构下,服务器端还是可以利用一些控件事件去做数据检查和判断并返回错误信息,但是在这以外的就难说了。对我们的应用来说,如果数据检查能在客户端处理的话,那就减少了服务器上出问题的可能,但是这样做又可能造成客户端过分膨胀、难以维护。所以要在两者之间找到平衡的确不容易。我自己的处理方法是,服务器上建立一个方法,接受客户端的数据或参数,然后在服务器上处理并返回结果,包括错误信息
声明方法比如:excute(),Insert(),Modify(),Query()方法等,并且把这些方法声明成safecall这样,客户端执行的时候如果服务器端引起错误的话,默认HResult值返回错误信息建议,不要用什么托拉控件比如clientDataset绑定什么的,这样做出问题也不知道怎么回事,还是自己写代码好,
比如,服务器端访问远程数据库的程序可以不要托ADOConnection什么之类的控件(其实写代码和这个差不多,但是可以跟踪到代码执行),详细可以参照Demos\ado应用实例,这样
可能对原理的调用会更加熟悉些。
象这种多层结构的开发,问题出现多的一般都体现在通讯上面。而 导致外部不良干扰的因素包括系统的网络通信出现故障,DBMS自身出现问题不可用,Client端自身出现问题不可用。其中DBMS和Client是服务端的通信对象,当出现DBMS和Client不可用时,可视为不可忽略的通信故障处理。
网络通信故障我觉得可以划分以下几个方面:
根据通信对象划分,在这方面主要是
服务端作为Client与DBMS的中间层,与两方都有通信;因此服务端需要处理的网 络通故障分为两类:与DBMS的网络通信故障。与client的网络通信故障;
处理与DBMS的网络通信故障的原则。
1.服务端在无库操作请求时,忽略网络故障。
服务端不会主动检测网络状态是否正常,在未接受库操作请求时,服务端忽视网络故障的存在。若在这一段时期内,故障能被排除,则服务端以后的库操作也能正常进行,从而实现服务端的高容错性。
库操作请求包括:创建数据库连接;获取数据库的数据;提交更新数据至数据库;释放数据库连接。2.隔离确定的库操作请求的影响范围。
实现库操作的线程化,缩小触发故障后的影响范围,避免Client之间的相互影响。使某一个Client在故障阶段发出库操作请求,只会影响该客户自己。3.服务端及时调整数据库连接资源
服务端有一套维护数据库连接数目的机制,能根据用户的需求状况,选择恰当的时机,自动检测自己目前的数据库连接资源是否与应有的数据库连接资源能力相符,并作出相应的调整:创建新的数据库连接或释放多余的数据库连接。从而维护资源的正常受控状态。
先说到这里吧!还要做事去了。言语之间难免浮现我的肤浅。请各位多指教!