線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:999
推到 Plurk!
推到 Facebook!

如何將圖片存入三層式後端資料庫中?

尚未結案
landochu
一般會員


發表:23
回覆:20
積分:8
註冊:2003-12-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-14 20:53:46 IP:61.219.xxx.xxx 未訂閱
如題,因為上次用了個包絡伯(BLOB)型態的"罕見用法",導致沒有人能夠幫偶解決此問題,因此我決定不限制使用方式,只求能夠將我的JPEG圖片塞到後端資料庫中就可以了! 請各位大大幫幫忙吧~~ 提供一下各位將JPEG圖片塞至"三層式"後端資料庫的做法吧!!(求各位了!!)
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-15 01:56:24 IP:203.204.xxx.xxx 未訂閱
landochu 你好
引言: 如題,因為上次用了個包絡伯(BLOB)型態的"罕見用法"
使用Blob型態儲存圖片,並不算"罕見",至少我也是這樣用,因為用Blob我可以存任何型態的資料,不限圖片資料!
引言: 導致沒有人能夠幫偶解決此問題
沒人回答,應該是你提供的資訊不足,太籠統了,大家不知怎麼回答,而不是因為你使用Blob型態的問題。 如何有效地報告錯誤 anpino 版主轉貼 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53181 回歸主題:先問你一個問題..不使用"三層式架構",你可以處理存取圖片了嗎? 否:那你的問題在圖片存取而不在"三層式架構" 可:你先將DataSetProvider.Options.poFetchBlobsOnDemand 設為True(即Options包含poFetchBlobsOnDemand選項),試試看可不可以正常運作?(這時處理的速度會比較慢,如果圖片多且大的話) 先求可以運作,後續再來考慮速度的問題,ok? _______________________________________ 深藍的魚,祝您好運..........連.連
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-15 08:57:00 IP:61.222.xxx.xxx 未訂閱
function TPICTUREObj.UpdateImage(sPrjID, sPictID: String): String;
var
  FupDate:TQuery;
  Jpg:TJPEGImage;
  Stream:TMemoryStream;
begin
  FupDate:=TQuery.Create(FOwner);
  Jpg:=TJPEGImage.Create;
  Stream:=TMemoryStream.Create;
  try
    FupDate.DatabaseName:=FDatabase.DatabaseName;
    try
      FssSQL.Clear;
      FssSQL.Add('UPDATE PICTURE ');
      FssSQL.Add('   SET PICT_IMAGE=:B_PICT_IMAGE');
      FssSQL.Add(' WHERE SYS_PRJ_ID = '+sPrjID);
      FssSQL.Add('   AND PICT_ID = '+sPictID);
      FupDate.SQL.Text:=FssSQL.Text;
      JPG.Assign(FImage.Picture); //FImage為一TImage,且內已有JPEG圖
      JPG.SaveToStream(Stream);
      FupDate.ParamByName('B_PICT_IMAGE').SetBlobData(Stream.Memory,Stream.Size);
      if FDatabase.InTransaction then
        FDatabase.Rollback;
      FDatabase.StartTransaction;
      FUpDate.Prepare;
      FupDate.ExecSQL;
      Result:='圖檔寫入成功';
      FDatabase.Commit;
    except
      on E:Exception do
      begin
        FDatabase.Rollback;
        raise Exception.Create('圖檔寫入失敗,錯誤訊息如下:'#13 e.Message);
      end;
    end;
  finally
    FUpDate.Active:=False;
    FupDate.Free;
    Stream.Free;
  end;
end;
以上是以BDE方式連資料庫的. 請問一下, (1)你連資料庫是用什麼連的?BDE?ADO?dbExpress?後端資料庫是什麼? (2)client端與ApServer用什麼方式連接?TSocketConnection?TDCOMConnection? 雖然原則上寫入資料庫的程式都差不多,但因為架構的不同,需要注意的地方也不同,所以,如果你仍試不出來,最好把你的架構詳述一下,甚致,把出錯的程式碼放上來,這樣會比較快找到答案
系統時間:2024-05-18 14:09:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!