三层,怎样用ClientdataSet.CommandText,更新,插入数据。。。

521zhou 2003-09-13 06:57:26
中间层为 ADOquery, DataSetProvider
在Client写SQL语句,能正确查询数据。。。
但怎样才能更新,插入数据呢。。
更新时总是报服务器的SQL为空,难道非要一个
ClientdataSet对应一个ADOquery, DataSetProvider,并把SQL语句写在中间层吗?
...全文
112 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
leo1111111 2003-09-22
  • 打赏
  • 举报
回复
客户端直接用sql,这样做中间层只起个传递sql的作用了,还算多层结构吗
yanhuizen 2003-09-21
  • 打赏
  • 举报
回复
看来你是做这方面的东西少了!!
PrgmLover 2003-09-21
  • 打赏
  • 举报
回复
各位大侠说的已经很清楚了,按照方法应该没问题了
确实不提倡在客户端提交SQL语句,主要目的就是尽量把访问数据库服务的业务封装在中间层,客户端只接收和提交整个的数据集。
xuecswl 2003-09-21
  • 打赏
  • 举报
回复
何以唉声叹气?
问题还不能解决?....郁闷了...
521zhou 2003-09-21
  • 打赏
  • 举报
回复
哎。。。
yousoft2013 2003-09-21
  • 打赏
  • 举报
回复
sql和commandtext对上就可以更新。。
否则只能查询
michaelpeng7799 2003-09-21
  • 打赏
  • 举报
回复
何止是不推荐,如果你看了JAVA和.NET的3层结构,这样简直是不能够的。
hiflower 2003-09-19
  • 打赏
  • 举报
回复
如果客户端不写 SQL,则中间层对应的 Query 一定要写 SQL。(SELECT 语句)
或者就在客户端写 SQL ,但不推荐。
xuecswl 2003-09-19
  • 打赏
  • 举报
回复
对单个表操作时,可以在ADOQuery.SQL.Text中写入此表的查询语句...然后像你那样就可以
如果没有查询语句.就要手写相应的更新操作...
对多个表这种方法不行的..
Tiejun_Chenfang 2003-09-19
  • 打赏
  • 举报
回复

with ClientDataSet1 do
begin
Open;

你在提取数据时,ADOQuery的sql语句写载哪里?

你是不是几个ClientDataSet公用一个连接?

521zhou 2003-09-19
  • 打赏
  • 举报
回复
中间件,ADOQuery不写任何查询语句,或者和要更新的表不相同的查询语句。。。并把DataSetProvider的Options設為AllowCommandText=True;
///
客户端:

with ClientDataSet1 do
begin
Open;
Append;
FieldValues['fieldname']:=fieldvalue;
。。。。
Post;
ApplyUpdates(-1);
end;

提交不成功。。。。。。。但在两层中没问题。。。

hiflower 2003-09-15
  • 打赏
  • 举报
回复
如果用三层,最好不要在客户端写 SQL,而写在中间层。

可以这样插入记录:
with ClientDataSet1 do
begin
Open;
Append;
FieldValues['fieldname']:=fieldvalue;
Post;
ApplyUpdates(0);//此句可写在另一处以实现批量更新
end;

如果用SQL 来插入记录,也没问题,但服务端必须允许客户端修改 SQL:
with ClientDataSet1 do
begin
Close;
CommandText:='INSERT INTO tablename(fieldname) VALUES(fieldvalue');
Execute;
end;
foxe 2003-09-15
  • 打赏
  • 举报
回复
大家都说三层的话是不在客户端写SQL的,那从客户端传SQL和应用服务器中用SQL返回数据集有什么区别,好处在哪儿!
WGYKING 2003-09-15
  • 打赏
  • 举报
回复
同意
hiflower 2003-09-15
  • 打赏
  • 举报
回复
看看你的更新语句
521zhou 2003-09-15
  • 打赏
  • 举报
回复
我已吧 DataSetProvider的Options設為AllowCommandText=True,
更新时总是报服务器的SQL为空
lijx18 2003-09-15
  • 打赏
  • 举报
回复
楼上的兄弟(hiflower(花) )说的很清楚。
oklida 2003-09-13
  • 打赏
  • 举报
回复
来晚了!!
go_my_sky 2003-09-13
  • 打赏
  • 举报
回复
同意
go_my_sky 2003-09-13
  • 打赏
  • 举报
回复
同意
加载更多回复(1)

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧