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

請問如何將不特定檔案存入取出資料庫內

缺席
SDL
一般會員


發表:2
回覆:6
積分:6
註冊:2002-10-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-30 13:24:29 IP:210.59.xxx.xxx 未訂閱
我用了很多方式都很亂也不確定可以存回 例如 Table1裡的Note是BLOB (1) 存入(目前都沒問題,可存大檔案ex.20M) Table1Note->LoadFromFile( OpenDialog1->FileName ); 取出(常會出錯,小檔案也是) Table1Note->SaveToFile( SaveDialog1->FileName ); (2) Table1Note 如何動態生成, 因為每次我都是由Table1加入all fields才會有 如何由 Table1->FiledByName( "Note" ) loadfile 或 savefile
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-01 23:10:10 IP:61.221.xxx.xxx 未訂閱
引言: 我用了很多方式都很亂也不確定可以存回 例如 Table1裡的Note是BLOB (1) 存入(目前都沒問題,可存大檔案ex.20M) Table1Note->LoadFromFile( OpenDialog1->FileName ); 取出(常會出錯,小檔案也是) Table1Note->SaveToFile( SaveDialog1->FileName ); (2) Table1Note 如何動態生成, 因為每次我都是由Table1加入all fields才會有 如何由 Table1->FiledByName( "Note" ) loadfile 或 savefile
SDL兄 建議你另一種做法 希望你不要介意 在資料庫中~~避免存放實體的檔案內容 而只存放「檔案路徑」 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-04 15:06:13 IP:203.204.xxx.xxx 未訂閱
引言: 我用了很多方式都很亂也不確定可以存回 例如 Table1裡的Note是BLOB (1) 存入(目前都沒問題,可存大檔案ex.20M) Table1Note->LoadFromFile( OpenDialog1->FileName ); 取出(常會出錯,小檔案也是) Table1Note->SaveToFile( SaveDialog1->FileName ); (2) Table1Note 如何動態生成, 因為每次我都是由Table1加入all fields才會有 如何由 Table1->FiledByName( "Note" ) loadfile 或 savefile
BLOB要存大檔案要設定BDE的BLOB SIZE,且要BDE有支援。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-09 10:35:32 IP:210.244.xxx.xxx 未訂閱
這也是困擾我的一個問題,來插一角討論一下 以前我是學ACCESS出身的,不過後來我用其他資料庫SQL Server等等的 一般來說都無法支援將檔案直接存放在資料庫內(除了image) 但是Access有個特異功能: 開啟一個資料表,設定一資料行,設定資料行資料型別為OLE Object(OLE物件) 日後可以在這個欄位裡面插入任何檔案,也可以叫出該原始檔案, 但是他的檔案形式是採動態產生的,例如插入一個Test.TXT檔 再重新把該檔案叫出來時,檔名為PKGAA.TXT, 存放路徑是 C:\DOCUMENT and SETING\USER_NAME\LOCAL Settings\Temp\PKGAA.txt 如果是.exe檔,則會出現PKGAB.exe 編碼方式是PKGA [A_Z順序].附檔名 但是關閉後重新開啟,則又會出現不同檔名,且可以儲存檔案的更動喔 這種方法很好用,我不知道為什麼SQL Server不支援, 同又是MS公司的產品,雖然如果真的需要,可以跨資料庫做 但是又出現一個問題,目前好像沒有DB感知元件可以存讀這個欄位 雖然有個OLE元件,但不是給資料庫用的........ 不知道各位前輩有沒有看過可以讀取該欄位的元件 楊政憲
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-09 10:38:30 IP:210.244.xxx.xxx 未訂閱
順便附帶一題,如果將該資料表含OLE Object轉入SQL Server 可以順利轉換成功為image 資料型態,讀取上好像也沒問題, 可是就是沒辦法直接在sql server直接存入該欄位 各位前輩有沒有好方法呢?? 楊政憲
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
SDL
一般會員


發表:2
回覆:6
積分:6
註冊:2002-10-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-09 11:46:45 IP:210.59.xxx.xxx 未訂閱
引言: 這也是困擾我的一個問題,來插一角討論一下 以前我是學ACCESS出身的,不過後來我用其他資料庫SQL Server等等的 一般來說都無法支援將檔案直接存放在資料庫內(除了image) 但是Access有個特異功能: 開啟一個資料表,設定一資料行,設定資料行資料型別為OLE Object(OLE物件) 日後可以在這個欄位裡面插入任何檔案,也可以叫出該原始檔案, 但是他的檔案形式是採動態產生的,例如插入一個Test.TXT檔 再重新把該檔案叫出來時,檔名為PKGAA.TXT, 存放路徑是 C:\DOCUMENT and SETING\USER_NAME\LOCAL Settings\Temp\PKGAA.txt 如果是.exe檔,則會出現PKGAB.exe 編碼方式是PKGA [A_Z順序].附檔名 但是關閉後重新開啟,則又會出現不同檔名,且可以儲存檔案的更動喔 這種方法很好用,我不知道為什麼SQL Server不支援, 同又是MS公司的產品,雖然如果真的需要,可以跨資料庫做 但是又出現一個問題,目前好像沒有DB感知元件可以存讀這個欄位 雖然有個OLE元件,但不是給資料庫用的........ 不知道各位前輩有沒有看過可以讀取該欄位的元件 楊政憲
關於我的問題我已解決掉了,我是使用MYSQL的BLOB,目前沒有存不進的檔案格式 而且使用方法極為簡單,至於大小限制問題則是在MYSQL的設定MAX_allowed_packet=xxM, 我使用它來存圖檔(scanner)和文件資料
asupeduer
初階會員


發表:36
回覆:49
積分:27
註冊:2002-11-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-10 03:08:42 IP:210.244.xxx.xxx 未訂閱
關於我的問題我已解決掉了,我是使用MYSQL的BLOB,目前沒有存不進的檔案格式 而且使用方法極為簡單,至於大小限制問題則是在MYSQL的設定MAX_allowed_packet=xxM, 我使用它來存圖檔(scanner)和文件資料 -------------------------------------------------------------------- 請問一下,你在前端使用程式呼叫時,都怎麼做呢? 怎麼把圖檔或檔案叫出來,也是呼叫OLE Package的方法嗎? 實做上程式碼怎麼寫呢?是用Ole Container這個元件嗎?? 其實我想做的是同一個欄位,存放不同種類的資料,有其他方法在前端呼叫時, 直接開啟該檔案(不論是圖檔,文字,甚至Flash,EXE,ppt,exl)嗎? 楊政憲
------
//------------------------------------------------
我常在想,寫程式跟爬格子到底有什麼不同呢???????????
//------------------------------------------------
SDL
一般會員


發表:2
回覆:6
積分:6
註冊:2002-10-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-11 15:26:23 IP:210.59.xxx.xxx 未訂閱
引言: 關於我的問題我已解決掉了,我是使用MYSQL的BLOB,目前沒有存不進的檔案格式 而且使用方法極為簡單,至於大小限制問題則是在MYSQL的設定MAX_allowed_packet=xxM, 我使用它來存圖檔(scanner)和文件資料 -------------------------------------------------------------------- 請問一下,你在前端使用程式呼叫時,都怎麼做呢? 怎麼把圖檔或檔案叫出來,也是呼叫OLE Package的方法嗎? 實做上程式碼怎麼寫呢?是用Ole Container這個元件嗎?? 其實我想做的是同一個欄位,存放不同種類的資料,有其他方法在前端呼叫時, 直接開啟該檔案(不論是圖檔,文字,甚至Flash,EXE,ppt,exl)嗎? 楊政憲
事實上方法極為簡單, 範例如下 (1)載入檔案存入note欄位內(note是一blob) TFileStream *fs; TStream *s; if( OpenDialog1->Execute() ) { s=Table1->CreateBlobStream( Table1->FieldByName("Note"), bmWrite ); s->Seek( 0, 0 ); fs=new TFileStream( OpenDialog1->FileName, fmOpenRead ); s->CopyFrom( fs, fs->Size ); fs->Free(); s->Free(); } (2)自note內取出資料存成檔案 TFileStream *fs; TStream *s; if( SaveDialog1->Execute() ) { s=Table1->CreateBlobStream( Table1->FieldByName("Note"), bmRead ); s->Position=0; fs=new TFileStream( SaveDialog1->FileName, fmCreate ); fs->Seek(0, 0); fs->CopyFrom( s, s->Size ); fs->Free(); s->Free(); 夠簡單吧! 不過就是用 FileStream & Stream 在那兒轉來轉去而已 但它沒有原始檔名資料,建議你另加一欄位存放原始檔名 如果你不想存檔可以將Stream傳至您的其他元件直接觀看,例如pdf, bmp, jpg tiff, word, excel..........等其他方式處理,反正BLOB是完完整整的將檔案存起來也不管你的資料格式是啥隨便你玩,只是請注意一下容量大小,若你是經由端 伺服器那麼最好有經過特別處理或不純放太大檔案
系統時間:2024-04-27 6:19:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!