Delphi+MySQLでBLOB型ファイルを保存するには?


ピーチ  2010-04-08 17:17:10  No: 38233  IP: [192.*.*.*]

Delphi+MySQLでBLOB型ファイルを保存・表示するには
どのようにすれば良いのでしょうか?

因みにMicrosoft SQL Server では成功したのですが
それを使いまわしてみたのですが駄目でした・・・。

編集 削除
かず  2010-04-10 16:18:59  No: 38234  IP: [192.*.*.*]

私の場合
 KikiTable.FieldByName('Image').Assign(BMap);
と書いています。

編集 削除
ピーチ  2010-04-10 18:44:13  No: 38235  IP: [192.*.*.*]

かずさん
有難うございます。

データベースMySQL、コンポーネントZQueryとClientDataSetとDBGridを使用しているのですが
DBGridをダブルクリックしてそのフィールドに
画像を保存したいのですがどの様にすればよいのかご教授を願い致します。

ClientDataSet1.Edit;
ClientDataSet1.FieldByName('Image').Assign(BMap);
ClientDataSet1.ApplyUpdates(-1);

以上の様な感じで良いのでしょうか???

編集 削除
かず  2010-04-10 19:42:40  No: 38236  IP: [192.*.*.*]

私はMyDACコンポーネントを使用しています。
dbExpressの詳細は不明ですが

ClientDataSet1.Edit;
ClientDataSet1.FieldByName('Image').Assign(BMap);
ClientDataSet1.Post;  が必要ではないでしょうか
ClientDataSet1.ApplyUpdates(-1);

Postがなければ保存されないのでは

編集 削除
ピーチ  2010-04-10 20:53:42  No: 38237  IP: [192.*.*.*]

かずさん
書き忘れましたがDataSetProviderも使用しています。

以前データベースを使用した他のアプリを作成した際は
ClientDataSet1.Post;
を使用しなくても下記の方法で保存されていました。

ClientDataSet1.Edit;
〜〜〜〜〜〜
データベースの項目への書き込み作業
ClientDataSet1.FieldByName('Time').AsDateTime:=Date;
などなど・・・。
〜〜〜〜〜〜
ClientDataSet1.ApplyUpdates(-1);
ClientDataSet1.Refresh;
以上です。

試しにかずさんの方法を試してみましたが、
MySQLからBLOB項目の読み出しも方法がわからない為
保存されているか確認が出来ません・・・。

よろしければそちらもお教授お願いします。

編集 削除
かず  2010-04-11 17:28:52  No: 38238  IP: [192.*.*.*]

BLOB項目の読み出しもわからないなら、何を持って書き込みできないと
判断しているのか?

DB開発するなら更新画面を作成し、データが更新できるかどうか確認する
簡単なプログラムを作るべきです。
BLOBがイメージならTDBImageを使うだけです。
文字や数値項目は更新できるのかな
POSTはDBGridなどで行を移動させると暗黙的に実行されますが、されない場合もあるので明示的のPOSTします。

編集 削除
ピーチ  2010-04-13 00:46:55  No: 38239  IP: [192.*.*.*]

確認プログラムは作ってあったのですが、(と言ってもDBImageを貼り付けただけですが・・・。)
 BLOB項目が表示されないのはDBImageの使い方が悪いのか、
DBに保存出来ていないのかどちらか自信がなかったもので。
DBに他の項目(文字や数値)を追加してプログラム側にも
DBに追加した他の項目を参照しているDBEditを追加して確認してみたのですが、
他の項目はClientDataSetからデータの更新が出来るのにBLOB項目のみ
更新されずDBImageに表示されません。

編集 削除
かず  2010-04-13 18:42:21  No: 38240  IP: [192.*.*.*]

私は基本的にdbExpressは使用していません。
有償のMyDACを使用しています。非常にシンプルでODBCドライバーなしに接続できます。設定も楽です。

ためしに再度Delphi2007、SimpleDataetを使用して、テストしましたが
ちゃんとイメージが登録されます。
ClientDataSetは以前確かめました。
他の項目ができて、BLOBができないとは、MEDIUMBLOBを使用していますか
BLOBのサイズ上限は確認されましたか。

編集 削除