B
blue_morning
Unregistered / Unconfirmed
GUEST, unregistred user!
看了李SIR的书和在DFW上找了找对三层结构中处理逻辑错误的方法,
先简要总结如下:
例子:client要新增一个用户,当提交的新增的用户名时如果此用户名已经存在时
就产生了一个逻辑错误(用户名必须唯一)。
不讨论不先做判断是否已有用户就插入,再通过数据库异常来处理。
1、中间层用一个query写好一条如select * from UserTable wherer UserName = :UserName
的SQL语句,用ClientDataSet带入动态参数,然后在客户端判断ClientDataSet.RecordCoun > 0
确定是否用户名重复。
2、在客户端调用DCOM或Socket的AppServer.Event(UserName, OtherParameters),来进行新增用户的操作,
1的特点是简单,但逻辑写在了客户端,当更新程序时必须更新客户端的应用程序。且这样的方法
不能被其它的系统调用。
2我觉得才是真正三层结构的写法,但是这里的逻辑错误如何处理呢?
从李SIR的书来看,可以带入一个或多个OldVariant变量,然后对这个变量赋值进行操作。
我的想法是每个方法都有vResult, vMsg两个OleVariant参数。
vResult是一个Integer的错误标识(如用0来表示成功,其它表示失败),vErrorMsg是说明错误的string。
客户端在调用了AppServer.Event后就读vResult的值来判断是否执行成功。如果不成功就显示vErrorMsg的内容。
但这样的方法是不是太土了? :)
请大家指点。
先简要总结如下:
例子:client要新增一个用户,当提交的新增的用户名时如果此用户名已经存在时
就产生了一个逻辑错误(用户名必须唯一)。
不讨论不先做判断是否已有用户就插入,再通过数据库异常来处理。
1、中间层用一个query写好一条如select * from UserTable wherer UserName = :UserName
的SQL语句,用ClientDataSet带入动态参数,然后在客户端判断ClientDataSet.RecordCoun > 0
确定是否用户名重复。
2、在客户端调用DCOM或Socket的AppServer.Event(UserName, OtherParameters),来进行新增用户的操作,
1的特点是简单,但逻辑写在了客户端,当更新程序时必须更新客户端的应用程序。且这样的方法
不能被其它的系统调用。
2我觉得才是真正三层结构的写法,但是这里的逻辑错误如何处理呢?
从李SIR的书来看,可以带入一个或多个OldVariant变量,然后对这个变量赋值进行操作。
我的想法是每个方法都有vResult, vMsg两个OleVariant参数。
vResult是一个Integer的错误标识(如用0来表示成功,其它表示失败),vErrorMsg是说明错误的string。
客户端在调用了AppServer.Event后就读vResult的值来判断是否执行成功。如果不成功就显示vErrorMsg的内容。
但这样的方法是不是太土了? :)
请大家指点。