Delphi+MySQLでBLOB型ファイルを保存・表示するには
どのようにすれば良いのでしょうか?
因みにMicrosoft SQL Server では成功したのですが
それを使いまわしてみたのですが駄目でした・・・。
私の場合
KikiTable.FieldByName('Image').Assign(BMap);
と書いています。
かずさん
有難うございます。
データベースMySQL、コンポーネントZQueryとClientDataSetとDBGridを使用しているのですが
DBGridをダブルクリックしてそのフィールドに
画像を保存したいのですがどの様にすればよいのかご教授を願い致します。
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('Image').Assign(BMap);
ClientDataSet1.ApplyUpdates(-1);
以上の様な感じで良いのでしょうか???
私はMyDACコンポーネントを使用しています。
dbExpressの詳細は不明ですが
ClientDataSet1.Edit;
ClientDataSet1.FieldByName('Image').Assign(BMap);
ClientDataSet1.Post; が必要ではないでしょうか
ClientDataSet1.ApplyUpdates(-1);
Postがなければ保存されないのでは
かずさん
書き忘れましたがDataSetProviderも使用しています。
以前データベースを使用した他のアプリを作成した際は
ClientDataSet1.Post;
を使用しなくても下記の方法で保存されていました。
ClientDataSet1.Edit;
〜〜〜〜〜〜
データベースの項目への書き込み作業
ClientDataSet1.FieldByName('Time').AsDateTime:=Date;
などなど・・・。
〜〜〜〜〜〜
ClientDataSet1.ApplyUpdates(-1);
ClientDataSet1.Refresh;
以上です。
試しにかずさんの方法を試してみましたが、
MySQLからBLOB項目の読み出しも方法がわからない為
保存されているか確認が出来ません・・・。
よろしければそちらもお教授お願いします。
BLOB項目の読み出しもわからないなら、何を持って書き込みできないと
判断しているのか?
DB開発するなら更新画面を作成し、データが更新できるかどうか確認する
簡単なプログラムを作るべきです。
BLOBがイメージならTDBImageを使うだけです。
文字や数値項目は更新できるのかな
POSTはDBGridなどで行を移動させると暗黙的に実行されますが、されない場合もあるので明示的のPOSTします。
確認プログラムは作ってあったのですが、(と言ってもDBImageを貼り付けただけですが・・・。)
BLOB項目が表示されないのはDBImageの使い方が悪いのか、
DBに保存出来ていないのかどちらか自信がなかったもので。
DBに他の項目(文字や数値)を追加してプログラム側にも
DBに追加した他の項目を参照しているDBEditを追加して確認してみたのですが、
他の項目はClientDataSetからデータの更新が出来るのにBLOB項目のみ
更新されずDBImageに表示されません。
私は基本的にdbExpressは使用していません。
有償のMyDACを使用しています。非常にシンプルでODBCドライバーなしに接続できます。設定も楽です。
ためしに再度Delphi2007、SimpleDataetを使用して、テストしましたが
ちゃんとイメージが登録されます。
ClientDataSetは以前確かめました。
他の項目ができて、BLOBができないとは、MEDIUMBLOBを使用していますか
BLOBのサイズ上限は確認されましたか。
ツイート | ![]() |