• Delphi7数据库编程之TDataSet(转)


    TDataSet类由TBDEDataSet(BDE组件)、TCustomADODataSet(ADO组件)、TIBCustomDataSet(InterBase组件)、TCustomSQLDataSet(dbExpress组件)和TCustomClientDataSet子类组成。

    下面介绍DataSet类中比较重要的属性(可能会有取舍,等到真正做项目用到的时候在进行补充)

    1.Active:判断数据库是否已打开;

    2. Bof:判断数据集的第一条记录是否激活(且在以下状态下为true:1.打开一个数据集;2.用First方法访问数据集;3.使用Prior方法且该方法已失效;4.设置一个空范围或数据集的setRange方法);

    3. BookMark:在DataSet中设置一个书签;

    4. Buffers:在内部缓存中提供索引来存取记录的缓冲区;

    5. CurrentRecord:在记录缓存区的内部缓存中的当前记录的索引;

    6. DataSource:表示其他提供值的数据集的数据源,其默认值为nil;

    7. Eof:判断数据集是否指向最后一条记录(在以下状态下为true:1.打开一个空的数据集;2.调用Last方法;3.调用next方法但当前记录已经是最后一条记录;4.对空范围或记录调用SetRange方法);

    8. Found:移动到一个不同的记录上是否成功;

    9. IsUniDirectional:判断数据集是否为TCustomSQLDataSet的子集;

    10. Modifid:活动的记录是否可以修改;

    11. RecNo:返回在一个数据集中已活动的记录条数;

    12. RecordCount:与数据集关联的记录条数;

    13. RecordSize:表示需要内部缓冲区的大小(在TDataSet中,RecordSize为0);

    14.State:设定当前数据集的操作模式的状态(打开一个数据集,状态由dslnactive变成dsBrowse;编辑状态(dsEdit);插入状态(dsInsert);调用SetKey或SetRange(dsSetKey);Posting或canceling(由当前状态变为dsBrowse);Closing数据集(由当前状态变为dslnactive));

    15.FieldValue:在数据集的活动记录中提供对所有字段的值的访问方法。(重要) 

    下面介绍TDataSet类中比较重要的方法:

    1.ActiveBuffer:返回一个指向活动记录缓存的指针。(经常与bookmark配合来记录活动记录缓存中bookmark的信息)

    2.Append:添加一个新的、空的记录到这个数据集的末尾。(重要)

    2.1 AppendRecord:添加一个新的、空的记录到数据集的末尾并自动post。例如

    Customer.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);

    3.FieldByName:根据字段的名称来访问(只用用来访问已存在的字段,否则会报EDatabaseError错误)。(重要)

    4.Post:将已修改过的记录写入到数据库或日志中[ADO组件直接将数据提交到数据库服务器]。(重要)

    procedure TForm1.Button1Click(Sender: TObject);
    
    begin
      SampleTable.Append; //添加一个新的记录
      SampleTable.FieldValues['ALPHANUMERIC'] := Edit1.text; //设定两个字段并赋值
      SampleTable.FieldValues['INTEGER'] := StrToInt(Edit2.text);
      SampleTable.Post; //提交记录到数据库或日志
    end;

    5.Cancel:如果活动的记录没有post,则可以取消活动的记录。但如果记录的状态不为(dsEdit or dsInsert),则方法无效。(重要)

    6.ClearFields:清空活动记录的所有字段的值。

    7.Close:关闭一个数据集。(重要)

    8.Create:创建一个TDataSet对象。(重要)

    9.Delete:删除一个活动记录并指针移动到DataSet对象的下一个记录。(重要)

    10.Destory:销毁DataSet对象(通常情况下DataSet有系统自动回收)。(重要)

    11.1 DisableControls:利用数据控件显示与一个DataSet对象关联的禁用数据。

    11.2 EnableControls:与DisableControl刚好相反。

    12.Edit:DataSet对象进入编辑状态。(重要)

    13.FindField:搜索指定DataSet的字段。(如果未找到,则返回nil)(重要)例如:

    with Table1 do
    begin
      FindField('CustNo').AsString := '1234';
      Fields[0].AsString := '1234';
    end;

    14.1 FindFirst:是否指定DataSet对象的第一条记录,返回bool类型。(重要)

    14.2 FindLast:与FindFirst方法刚好相反。(重要)

    14.3 FindNext:判断指针是否定位到DataSet对象的下一个数据记录,返回bool类型。(重要)
    14.4 FindPior:与FindNext方法刚好相反。(重要)
    以上方法如返回false,则表示活动记录为成功修改;返回true,则表示修改成功。

    15. First:移动到DataSet的第一条记录。调用该方法的目的是为了让DataSet的第一条记录设置为active。(重要)

    16. 1 BookMarkVid:指定书签的有效性。

    16.2 CompareBookMarks:用虚方法来比较两个书签。(如果BookMark1>BookMark2,则CompareBookMarks(BookMark1,BookMark2)>0)

    16.3 GetBookMark:为数据集的活动记录分配标签。(由TBookMark得到)

    16.4 SetBookMark:为数据集的活动记录设置标签。

    16.5 GotoBookMark:定位到数据集活动记录被书签标记的位置上。(重要)

    16.6 FreeBookMark:释放分配给指定标签的内存。(重要)例如:

    procedure TForm1.CopyDataClick(Sender: TObject);
    var
       SavePlace: TBookmark;
       PrevValue: Variant;
    begin
       with MyData do
       begin
        { get a bookmark so that we can return to the same record }
        SavePlace := GetBookmark; //得到一个标签
        try
          { move to prior record}
          FindPrior; 
          { get the value }
          PrevValue := Fields[0].Value;
          {Move back to the bookmark this may not be the next record anymore if something else is changing the dataset asynchronously }
          GotoBookmark(SavePlace);
          { Set the value }
          Fields[0].Value := PrevValue;
          { Free the bookmark }
        finally
          FreeBookmark(SavePlace);
        end;
      end;
    end;

    17. GetCurrentRecord:返回在缓存中的记录。(如返回false,则表示缓存区填充失败;如返回true,则缓存成功)(重要)
    18. GetDetailDataSets:将不是嵌套的数据集填充到一个数据集列表中。

    19. GetFiledData:在缓存中检索当前字段的值。(返回bool值,如返回false,则表示值未被成功提取)

    20.1  Insert:向数据集插入一个新的、空的记录。(重要)

    20.2 InsertRecord:向数据集插入一个新的、空的记录并自动post。(重要)

    21. IsEmpty:判断数据集是否为空。(重要)

    22. IsLinkedTo:判断数据集是否通过DataSource连接。(重要)

    23. Last:将指针移动到数据集的最后一条记录。(重要)

    24. MoveBy:从一个活动记录移动到另一个记录。(重要)

    25. Next:移动到下一条记录。(重要)

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    begin
      with ProgressBar1 do
      begin
        Min := 0;
        Max := Customers.RecordCount;
        Customers.First;
        for i := Min to Max do
        begin
          Position := i;
          Customers.Next;
        end;
      end;
    end;

    26. Open:打开数据集。(重要)

  • 相关阅读:
    PHP_Code_challenge(代码审计)
    超全局变量$GLOBALS
    upload-labs(文件上传)
    CTF bugku 论剑场 web20
    多次Printf()是否使用用同一栈帧的参数?
    (转载于度盘)小迪安全渗透-学习讲义
    SQL数据库操作练习(2)
    .htaccess绕过
    PHP序列化思考(9.14已修改)
    SQL数据库操作练习(1)
  • 原文地址:https://www.cnblogs.com/bestlove/p/6989564.html
Copyright © 2020-2023  润新知