請問如何把一個二進位檔存入資料庫中.... |
尚未結案
|
minjiu
中階會員 發表:27 回覆:119 積分:69 註冊:2002-06-26 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
先看看你用什麼databsae系統,不見得所有的database都支援blob格式的資料,就算有支援,最大可以存入多大的二進位資料,也不盡相同,還有像mysql里的blob與big5碼不能共存的問題也是個大麻煩~
procedure TForm1.Button1Click(Sender: TObject); var fstrm : TFileStream; BS : TBlobStream; begin with ADOQuery1 do begin // 隨你喜歡,看是要用ADO還是BDE,只要能支持BLOB欄位格式的Database都可以 SQL.Clear; SQL.Add('SELECT A,B,C FROM DATAX WHERE A=1'); // 我亂掰的,自己依需求修改一下 EXECSQL; OPEN; fstrm:=TFileStream.Create('C:\AUTOEXEC.BAT',fmOpenRead OR fmShareDenyWrite); fstrm.Seek(soFromBeginning,0); if fstrm.size>0 then begin if recordcount=0 then // SELECT 得到記錄就修改該筆記錄,找不到就新增一筆 APPEND else edit; BS:=TBlobStream(CREATEBLOBSTREAM(FIELDBYNAME('C'),bmWrite)); // C欄位是BLOB格式,用IMAGE可以支援到2G,用多少才佔多少實体空間 BS.CopyFrom(fstrm,0); BS.Free; // 啥感覺都沒就寫入了到SQL了...當然,有安全顧慮的系統,要自己修改一下 post; end else showmessage('無法加入其他文件夾的資料'); freeandnil(fstrm); CLOSE; END; end; 從SQL讀回來的方法 fstrm:=TFileStream.Create('C:\AUTOEXEC.BAK',fmCreate); // 故意寫成BAK的,免得寫壞了害你不能開機 fstrm.CopyFrom(CREATEBLOBSTREAM(FIELDBYNAME('C'),bmRead),0); freeandnil(fstrm);我不懂,不懂,不懂....所以我才來ktop學工夫 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |