Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在Delphi中保存数据的最佳方法是什么_Database_Delphi - Fatal编程技术网

Database 在Delphi中保存数据的最佳方法是什么

Database 在Delphi中保存数据的最佳方法是什么,database,delphi,Database,Delphi,我用Delphi编写了一个程序,其中保存了大量数据,我想知道哪种方法最适合保存到文件中。现在我们使用记录和“文件”来保存它,但我认为这应该是更好的方法。我更喜欢一个能让我们从现在使用的系统轻松迁移的系统 编辑:应用程序是一种数据库应用程序。用户使用它来管理数据。这取决于数据!常用的方法是数据库(大量记录的行)、XML(结构化数据存储)、ini文件(简单数据)或自定义格式(图形图像等)。Delphi非常适合使用数据库,它有一系列第三方选项,允许在代码中进行完全编译,因此对于一般数据,它们可以很好地

我用Delphi编写了一个程序,其中保存了大量数据,我想知道哪种方法最适合保存到文件中。现在我们使用记录和“文件”来保存它,但我认为这应该是更好的方法。我更喜欢一个能让我们从现在使用的系统轻松迁移的系统


编辑:应用程序是一种数据库应用程序。用户使用它来管理数据。

这取决于数据!常用的方法是数据库(大量记录的行)、XML(结构化数据存储)、ini文件(简单数据)或自定义格式(图形图像等)。Delphi非常适合使用数据库,它有一系列第三方选项,允许在代码中进行完全编译,因此对于一般数据,它们可以很好地工作。

如果它是一种数据库应用程序,将数据存储在数据库中可能是一种合理的选择

一种替代方法是使用拖缆:

procedure TmyThing.PutData(AFile: String);
var
  writer: TWriter;
  stream: TFileStream;
begin
  stream := TFileStream.Create(AFile, fmCreate);
  try
    writer := TWriter.Create(stream, $ff);
    try
      with writer do
      begin
        WriteSignature;         {marker to indicate a Delphi filer object file.}
        WriteListBegin;         {outer list marker}
        WriteFloat(cVersion);   {write the version for future use}
        WriteString(someProperty);
        {... etc. ...}
        WriteListEnd;           {outer list marker}
      end;
    finally
      writer.Free;
    end;
  finally
    stream.Free;
  end;
end;

这也取决于你保存后想用它做什么。。。此时是否只是存储“归档”数据?或者您想搜索它,在将来的某个时候检索一些数据,然后再次保存(可能已更改),或者您想将其全部加载,以某种方式进行操作,然后再次保存回来?

有很多选择。如果您确信您永远不会需要超过一个用户,我会选择保存在XML中的ClientDataSet。丹·米瑟(Dan Miser)写了一些关于它们的文章,这些文章非常好。如果您不确定将来是否需要一个或多个用户,我会选择嵌入式数据库。火鸟是一个很好的选择。有关更多信息,请参阅。使用相同的代码,您将能够在将来生成多用户版本。

对于一个简单的应用程序,为什么不使用本地
TClientDataset
?它将允许搜索、排序和使用数据库控件。如果在uses子句中包含
midaslib
,则也可以在不使用任何外部dll的情况下部署应用程序

var

 FileStream: TFileStream;


procedure TForm1.Load(Sender: TObject);

Begin

if FileExists ('Thing2.dat') then

      Begin             
      FileStream := TFileStream.Create('Thing2.dat', fmOpenRead);
      FileStream.ReadComponent( {Thing like Edit1} );
      FileStream.Free;
      End;
end;
装载

procedure TForm1.Save(Sender: TObject);

Begin



 FileStream := TFileStream.Create('Thing2.dat', fmcreate);

 FileStream.WriteComponent(  {Thing like Edit1}   );

 FileStream.Free;



end; 
这应该有用,因为它对我有用