clientDataSet和TDataSetProvider对数据的操作

本文详细介绍了在Delphi中如何使用clientDataSet和TDataSetProvider进行数据操作,包括查询、添加、删除、更新和排序等。通过设置TClientDataSet的providerName和TDataSetProvider的相关属性,实现SQL语句的执行。此外,还讲解了数据绑定控件如TcxDBTextEdit和TcxDBDateEdit的配置方法,以及如何在ClientDataSet之间复制数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 dbgrdh1: TDBGridEh;
    con1: TADOConnection;
    qry1: TADOQuery;
    idmsg1: TIdMessage;
    ds2: TDataSource;
    ds1: TClientDataSet;

    dtstprvdr1: TDataSetProvider;


配置连接

qry.con指向con1

dtstprvdr1 的dataset指向qry1

dtstprvdr1 .option.poAllowCommandText=True

TClientDataSet.providerName=dtstprvdr1

ds2的dataset指向ds1

DBGrid1  datesource 指向 datasource1

在ds1.里面写如下代码

 ds1.Close;
    ds1.CommandText:='select * from Tree';
    ds1.Open;

得到查询的结果如下所示




//提交添加数据

    ds1.Insert;
    ds1.FieldByName('id').AsString:='cc';
    ds1.FieldByName('name').AsString:='aa';
    ds1.FieldByName('parentID').AsString:='bbb';
    //ds1.post;(当这个不能实现的时候就用下面的实现更新)
    ds1.ApplyUpdates(0); //填充数据

//删除数据

    ds1.Close;
   ds1.CommandText:='DELETE FROM Tree WHERE Tree.id='+ QuotedStr('4');
   ds1.Execute;

//更新数据

  ds1.Close;
   ds1.CommandText:='UPDATE Tree SETTree.id=xx  WHERE Tree.id=xx';
   ds1.Execute;

//字段排序

  ds1.IndexFieldNames:='id';

//筛选数据

 ds1.Filter:='name like '+QuotedStr('a%');   //筛选的表达式
 ds1.Filtered:=True;  //显示筛选后的数据消息



//TcxDBTextEdit    


设置dataBiding的datafield 为数据库指定的字段名称,datasource为指定数据库的datasource 



//绑定TLookUpComboBox

properties  -> ListField

properties  ->FieldKey

properties  ->ListSource

这三个分别设置就可以显示出结果


//TcxDBDateEdit   数据绑定日期控件


// DataClientSet执行SQL语句

首先,放一个TSQLDataSet+TDatasetProvider+TClientDataSet控件在窗体上,然后设置SQLDataset的SQLConnection属性为TSQLConnection1。

注意:如果用ClientDataSet控件查询,需要首先设置TDatasetprovider-options-poallowcommandtext 设为True.然后TDataSetprovider才能接受ClientDataSet的SQL语句。

procedure TForm1.Button1Click(Sender: TObject);
begin
self.ClientDataSet1.Close;
self.SQLDataSet2.Close; //必须先关闭SQLDataSet2,否则会报错。
self.ClientDataSet1.CommandText:='insert into main (title) values (''QQQQQQQQQQQQQQQ'')';
self.ClientDataSet1.Execute;

self.ClientDataSet1.Close;
self.ClientDataSet1.CommandText:='select * from main';
self.ClientDataSet1.Open;
end;

用SQL语句可以直接添加数据记录到数据库中,不用再ApplyUpdates方法,谢谢。



//dataclientset 之间的副局拷贝

 CDS2.AppendData(CDSEmployee.Data,False); 

或者是

CDS2.Data:=  CDSEmployee.Data;


 将DS1(数据源)的dataset = CDS2


dbgrdh2.DataSource:=DS1;  //绑定数据源


这样dbgrdh2就会显示数据。


//判断dbgridth数据类型

 if  CDSEmployee.Fields[0].DataType in [FTInteger,FtFloat]  then
   begin
        ShowMessage('AA');
   end;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值