BLOBの扱い、ADOTableとSimpleDataSetの動作


かず  2011-03-20 17:11:28  No: 40277

Delphi2010、MySQL5.5.8環境です。
TTableとADOTableを使用し、ParadoxデータをMySQLデータにコピーしています。この場合は問題なく動作しました。

dbExpressのSimpleDataSetを使用するとBLOBがあると、途中で止まったり、コピーされずにコピーされたりします。

かき方は
MySQLTable.Fields[j] := Table1.Fields[j];

何か根本的な間違えがあるのでしょうか


かず  2011-03-21 00:14:30  No: 40278

ソースは以下のとおりです。
Table1  :  Paradoxテーブル
MySQLTable  :MySQLテーブル

    Table1.First;
    while not Table1.Eof do begin
      MySQLTable.Insert;
      for j := 0 to Table1.FieldCount - 1 do begin
//        MySQLTable.Fields[j + m] := Table1.Fields[j];
          MySQLTable.Fields[j + m].Assign(Table1.Fields[j]);
      end;
//    ---  nullキー項目違反の場合は転送をパスする。
      try
        MySQLTable.Post;
        MySQLTable.ApplyUpdates(0);
      Except
        MySQLTable.Cancel;
      end;
      Table1.Next;
    end;

MySQLTable.Fields[j + m].Assign(Table1.Fields[j]);
と変えても変わりなし
ADOTableなら問題なく処理できるのでMySQLの問題ではないと思われます。
dbExpressに変更した理由はODBC関連のうっとおしさがあったためです。


かず  2011-03-24 06:57:40  No: 40279

正常に動作するADOTableを使用したプログラムとdbExpressを使用したプログラムの動作を比較したところ、

別のプログラムで変換後のテーブルを読む場合、dbExpressを使用した場合「ビットマップイメージが不正です」と表示されます。
一見正常に変換されるように見えるのですが、BLOBの扱いがまずいようです。
dbExpressの何かが問題のようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加