使用Delphi

时间:2017-05-19 09:48:19

标签: mysql delphi

我想在Delphi中的两个不同数据库之间进行数据传输。我无法使用TBachmove,因为要转移的列由用户选择。

我尝试集成此代码,但我不知道如何使用不同的数据库对其进行整数。

INSERT INTO table_destination ( colonne1, colonne2, colonne3, ..., colonneN )
SELECT
    colonne3,
    colonne8,
    NULL,
    ...,
    colonne137,
    ...,
    colonneN
FROM table_source;

1 个答案:

答案 0 :(得分:2)

  

我无法使用TBachmove,因为要转移的列是由用户选择的。

实际上,即使在D7中,只要不涉及Blob列,您就可以非常轻松地完成此操作。步骤进行:

  1. 创建指向MySQL目标数据库的ODBC系统DSN。

  2. 使用TTable创建一个Delphi项目,Table1打开你的Paradox表,一个TQuery,Query1,它使用与你的Paradox Table1相同的BDE别名, TTable Table2,它使用步骤1中的ODBC别名和BatchMove组件。给Table2一个TableName,这就是你想要调用MySQL表的地方。

  3. 为用户提供gui方法,以选择要复制的列。

  4. 当用户选择要复制的列时,创建一个SQL语句以从paradox表中选择这些列,将其加载到Query1并在其上调用Open。​​

  5. 将Query1设置为BatchMove1的源,将Table2设置为Destination,将BatchMove模式设置为batCopy

  6. 调用BatchMove1.Execute。

  7. 应该这样做。

    我第一次尝试使用" FishFacts"中的Biolife.Db表进行测试。演示失败,因为我有一个例外抱怨无效的blob大小。我的第二次尝试,使用Customer.Db表工作正常。

    就blob-size问题而言,尽管自从我使用BDE以来它已经是15年以上,ISTR有一个最大的blob-size配置参数,可以通过BDE管理员调整,并且有将其设置为"无最大值"的方法,可能将其设置为-1。

    当前版本的Delphi包括FireDAC数据访问组件,其中包括现代版本的#34; BatchMove组件不依赖于BDE,但我认为 FireDAC仅包含在XE8中的Delphi中。