在delphi中插入数据集中的数据

时间:2016-03-25 07:00:00

标签: delphi ms-access delphi-10-seattle nexusdb

我想将数据插入到访问数据库表中的nexusdb表中。我正在使用两个查询。一个用于从访问数据库中选择数据,另一个用于插入到nexusdb。我不希望使用循环插入它。有没有办法直接插入所有选定的数据集?

1 个答案:

答案 0 :(得分:1)

  

有没有办法直接插入所有选定的数据集?

如果有两个数据库,比如MS Sql Server或其他一些后端Sql服务器,比如MySql,你可以这样做,但在MS Access和NexusDB之间,我所知道的都没有。它们似乎共有的唯一数据库访问连接器是ODBC,并且afaik不支持跨不同驱动程序的异构查询(因此您无法执行“从source.database插入到destinationserver.database.table select *” 。表“)

所以我觉得你已经陷入了一个循环。唯一真正的问题是你是否必须自己编写循环或是否隐藏在库代码中。

下面的代码使用FireDAC的TFDDataMove组件在表之间移动数据。当然,要使用它,目标服务器需要支持FireDAC或ODBC。正如Uwe Raabe所说,截至目前(Delphi当前版本为西雅图),FireDAC不支持NexusDB,反之亦然。但是,根据他们的网站,有一个可用于NexusDB的ODBC驱动程序。虽然我没有安装NexusDB,但下面的其他ODBC驱动程序工作正常,所以应该使用NexusDB。

procedure TForm1.TestDataMove;
var
  Item : TFdMappingItem;
begin
  Item := FDDataMove1.Mappings.Add;
  Item.SourceFieldName := 'ID';
  Item.DestinationFieldName := 'ID';

  Item := FDDataMove1.Mappings.Add;
  Item.SourceFieldName := 'Name';
  Item.DestinationFieldName := 'Name';

  FDDataMove1.Source := FDTable1;
  FDDataMove1.Destination := FDTable2;
  FDDataMove1.Options := FDDataMove1.Options - [poOptimiseSrc];
  FDDataMove1.Execute;

  FDConnection2.Connected := False;
  FDTable2.Open;
end;