三层结构的基础问题:主键、应用程序服务器的代码、公共变量的定义及引用(300分)

  • 主题发起人 主题发起人 xinyt
  • 开始时间 开始时间
to me
bzmouse@sohu.com
 

IDENTITY(1,1)不行吗??我们都是这样做的.
 
定义变量
public withevents rdso as rds.datacontrol
dim rs as adodb.recordest
建立RDS对象
private sub form_load()
set rdso= new rds.datacontrol
end sub
打开RDS
private open()
rdso.server="http://127.0.0.1"
rdso.connect="procider=microsoft.jet.oledb.3.51;"&_
"data source=c:/mdb/1.mdb"
rdso.sql="select * from book"
rdso.executeoptions=adcexecasync
rdso.fetchoptions=adcfetcbackground
rdso.refresh
end sub
检查RDS
private sub rdso_onreadystatechange()
if ...
set rs= rdso.recorset
...
end sub
以上是用vb编写的代码,如果用DELPHI应该如何编写??
stevensoft@163.net
 
生成主键的方法俄刚刚做过,里牵涉到了在应用服务程序服务器建立一个方法,待俄一一道来:
1.主体结构:数据库用什么没所谓,应用程序服务器与数据库以ado联接,即adoconnection,
adotable,datasetprovider.
客户端以socketconnection与应用程序服务器联接,可以对应一个cliendataset,将属性与
应用程序服务器端的datasetprovider相对应.
2.定义生成主键的方法login_create_key:
点击view|type library,(打开应用程序服务器源程序后),在端口项右击菜单|new|method,
树形结构新加一项method1,更名为login_create_key,设置参数lc_key,设为[out],如果
需要由客户端来传入参数的话可以再加一个,设为[in],要注意一点设为out传递方向的需要
带上指针即在参数类型后追加*号我们假设lc_key为要传递回客户端的参数,只设一个,类型
定为variant*.
3.编写程序代码
点击type_library窗体上的refresh按钮后,应用程序自动在远程数据模块单元中添加了对应的
login_create_key方法,其基本思路:假如应用程序服务器只在一台机器上运行,可以以完整的
时间now,去掉中间的空格和特殊符号':",生成一个永不会重复的主键如果觉得还不保险的话
就可以在注册表中定义一个变量,随记录数增加,把它放到由时间生成的字符串,好了开始写代码
procedure login_create_key(var lc_key:olevarinat);safecall;(自动生成)
var
mykey:widestring;
begin
mykey:=formatdatetime('yyyy',now)+formatdatetime('mm',now)+formatdatetime('dd',now)+
formatdatetime('hh',now)+formatdatetime('m',now)+formatdatetime('ss',now);
lc_key:=mykey;
end;
4.在客户端调用方法取得回传主键
var
mykey:olevariant;
begin
socketconnection.appserver.login_create_key(mykey);
showemssage(mykey);
end;
 
在数据库端,写个触发器,当表增加一条新记录时,主加键自动生成
 
后退
顶部