用Database,Query,UpdateSQL如何实现对C/S数据库表的添加,修改,删除操作?(100分)(100分)

  • 主题发起人 主题发起人 地平线
  • 开始时间 开始时间

地平线

Unregistered / Unconfirmed
GUEST, unregistred user!
据说通常的C/S数据库开发都不用Table控件,而用Query控件。但如何用
Datebase,UpdateSQL,Query对表进行insert,modify,delete操作呢?Datebase
的用法我已经基本了解。

 
首先,你可以自己生成相应的sql语句
其次,你也可以像使用table一样使用query,是一样的。
比如query.edit,query.insert,query.delete,query.post,
query.fieldbyname('xxx').asxxxx等等
 
用database控件连接数据库,查询用

query1.sql.add('select ...');
query1.open;

query1.fields[index1].asxxx的方式

插入、删除等需要用数据库的transaction功能,主要步骤:

database1.starttransaction;

query1.sql.clear;

query1.sql.add('insert into ...');

query1.prepare;
query1.execSQL;

query1.unprepare;

database1.commit;
 
query1.requestlive:=true;
 
UPDATESQL中有DELETE,UPDATE的属性.
在里面写语句就行了.
 
建议用SQL语句写
插入语法: Insert Into 表名 (字段1,字段2) Values (字段1值,字段2值)
删除语法: Delete 表名 Where 条件
修改语法: Update 表名 Set 字段1=字段1值,字段2=字段2值 Where 条件

 
在Delphi的Demo中有例子。
 
常用用法:
  1、在Tquery中设Sql语句(如:Select * from employy)及设数据库别名;DatabaseName
CachedUpdates=True;UpdateObject=UpdateSQL
2、设UpdateSQL属性使之产生Insert,Delete,Updates语句
 3、最后你应可以用Tquery.Insert,Tqury.edit,Tquery.delete进行增加、编辑、删除动作
  但要注意一点,以上操作只有保存在缓存区,如要保存到后端数据库,应确定保存后写
上下语句:
  With DM_Sales,Dm_Public do begin
try
Database1.StartTransaction;
QuerylocateSql.ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
QuerylocateSql.CommitUpdates;
end;
 
ex1:
query1.close;
query1.sql.clear;
query1.sql.add('delete from country where name="america"');
query1.open;
如果要传参数
ex2:
query1.close;
query1.sql.clear;
query1.sql.add('delete from country where name=:name');
parambyname("name").asstring:=edit1.text;
query1.open;
 
Server端的Query的RequsetLive设置为true
Client端的ClientDataSet的AfterDelete和AfterPost的事件中,写
ClientDataSet.ApplyUpdates(-1);
(我们已开发过了)
 
非常感谢你们的回答。但还有一点问题想请教:
1。UpdataSQL产生的SQL语句和在Query中自己加入SQL语句有什么联系吗?
2。UpdataSQL中产生的SQL语句如何代入参数?
(因为updatasql没有params或parambyname属性)。
实际运用中难道是这样:
query1.sql:=updataSQL.insertsql;//or deletesql or modifysql
然后再对query1.sql进行操作。
不知我的想法对否,还请各位大侠点评指正。
 
{2。UpdataSQL中产生的SQL语句如何代入参数?
(因为updatasql没有params或parambyname属性)。
实际运用中难道是这样:
query1.sql:=updataSQL.insertsql;//or deletesql or modifysql}

cow,什么和什么啊?
updatesql要什么参数啊?
写法: updatesql's modifysql : update yourdb set field1 = :field1 ... where fieldn=:old_fieldn
insertsql and deletesql 是同样的写法。参数就是你SELECT 出来的字段名。
如果是旧的,在前面加上old.
别忘了把query的updateobject 和updatesql 联系上
 
谢谢你们的回答,我已经明白了。
 
后退
顶部