1.高手都说Sql语句要在server端构造,但怎么实现构造啊,迷茫!!!希望高手说说具体怎么做的!
2.不知道clientdataset和datasetprovider具体是干什么的,我试了一下不用这两个控件,直接传个sql语句过去,一样可以啊.
3.看到大家经常用applyupdate,我怎么不知道在哪里用啊,比如我client那里有个Edit 和 button!我点button就把edit.text插入一个表里,象这样最简单的功能是怎样实现?
4.如果用clientdataset的commandtext,数据在程序里的流程具体是怎么走的?是不是CDS把commandtext传给providerdataset,然后provider传给dataset,然后执行!
5.问题问的很乱,大家可能看着晕,说明了我对三层的迷茫!:(
2.不知道clientdataset和datasetprovider具体是干什么的,我试了一下不用这两个控件,直接传个sql语句过去,一样可以啊.
3.看到大家经常用applyupdate,我怎么不知道在哪里用啊,比如我client那里有个Edit 和 button!我点button就把edit.text插入一个表里,象这样最简单的功能是怎样实现?
4.如果用clientdataset的commandtext,数据在程序里的流程具体是怎么走的?是不是CDS把commandtext传给providerdataset,然后provider传给dataset,然后执行!
5.问题问的很乱,大家可能看着晕,说明了我对三层的迷茫!:(
客户端用DCOMConnection1.AppServer.GetRitht('admin');来调用,
服务器端用:
function GetRight(User: WideString):OleVariant;
var
sSQL: string;
begin
sSQL := 'Select * From tables Where UserName = ''' + User + '''
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sSQL);
ADOQuery1.Open;
if not ADOQuery1.eof then
begin
//加入取值之类的
end;
Result := //返回字符串值等
end;其中的ADOQuery1控件完全可以不与TDataSetProvider控件连系在一起,但一定要能访问到数据库就行了,而客户端你看到了调用时用的是TDCOMConnection的AppServer,所以并不一定会用到TClientDataSet控件(这是我推测的,昨天这样做的还没有测试,但我在客户端还是用TClientDataSet与TDCOMConnection控件联系起来,因为怕出问题嘛),所以客户端就叫瘦客户端一点没有错!
多层系统中,用户在客户端调用Tclientdataset组件的post方法时,只是把数据保存在客户端的内存中,并没有传送到服务器端,并写入数据库中,要写入这些变化就要用applyupdate方法前三点懂了,四和五就不用写了
呵呵
找本书看看吧
推荐李维写的书GoodLuck
谢谢你啊!我也是这几天刚学三层.看了你上面的理解和我理解的差不多,呵呵!就是因为可以绕开clientdataset和provider,所以我才问这两个控件的具体作用(最突出的优势).
按我的理解(不知道JoeSong兄是不是这样想),增,删,改 都写在server端,那就用不到clientdataset和provdier了吧!但查询怎么做呢?
还有一点,在增加的时候,client要传很多参数过去吧,这些参数怎么组织呢?到了server又怎么把他们一一对应到相应的数据库字段啊!..
<Delphi 5.X ADO/MTS/COM+高级程序设计篇>这本书后几章,我一直没找到在哪里下,各位能推荐个地址么?
两层是SQL语句在客户端的程序里,所以你把SQL语句提交给数据库服务器,三层中,你把两层中的客户端分成两部分,一部分管界面显示,另一部分管数据操作,你把数据操作的那部分放到服务器上当作中间层,所以SQL语句就到服务器上了,想象一下ASP是怎么做的,浏览器就象客户端,ASP的网页就象中间层(当然不能这麽说,只是一个类比,不过好像差不多哟^_^)。
剩下的就不会了,没用过MIDAS:)
大哥不用MIDAS,用的啥啊?我以前做b/s的,哎,前一段又做c/s,现在做c/a/s,思路有点乱了!:(对新增一条记录,在client把参数传过去,如果参数很多的话,怎么处理?
是不是在server里建一个方法,然后这个方法有N个in的参数?????
不知道大家是怎么处理?教教我啊!
xml没试过!
http://expert.csdn.net/Expert/TopicView1.asp?id=2548270我的实现过程是这样,几乎ClientDataSet可以不用到,但Provider不可能不用到,因为要用DCOMConnection.AppServer.方法名 来调用方法,所以如果DCOMConnection没有与Provider连接的话,如何调用?是不是?参数可以通过在COM+中即中间层定义属性实现,如果你会COM+那就很好办了,其实书上讲的未必都很能说明问题,我觉得李维的那本ADO MTS COM+的书也是如此,好像有点你看了我的书就会把我的知识窃走一样,真正从0起步时有用的内容往往不见得多。多想一想之间的关系也许会有帮助吧!
象这样的情况怎样处理?
如果在server端,定义方法属性的话,比如定义一个NewStu(这里要加N个参数),如果每个参数对应一个属性的话,我不大清楚怎么做?
能给我发一段代码看看怎么实现的么?
如要定义那个方法可能会有一个:
function NewStu(参数: 类型....):返回类型;
begin
//这里加代码便是了
end;
就是这样子。