請問如何將不特定檔案存入取出資料庫內 |
缺席
|
SDL
一般會員 發表:2 回覆:6 積分:6 註冊:2002-10-26 發送簡訊給我 |
我用了很多方式都很亂也不確定可以存回
例如 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 發送簡訊給我 |
引言: 我用了很多方式都很亂也不確定可以存回 例如 Table1裡的Note是BLOB (1) 存入(目前都沒問題,可存大檔案ex.20M) Table1Note->LoadFromFile( OpenDialog1->FileName ); 取出(常會出錯,小檔案也是) Table1Note->SaveToFile( SaveDialog1->FileName ); (2) Table1Note 如何動態生成, 因為每次我都是由Table1加入all fields才會有 如何由 Table1->FiledByName( "Note" ) loadfile 或 savefileSDL兄 建議你另一種做法 希望你不要介意 在資料庫中~~避免存放實體的檔案內容 而只存放「檔案路徑」 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我用了很多方式都很亂也不確定可以存回 例如 Table1裡的Note是BLOB (1) 存入(目前都沒問題,可存大檔案ex.20M) Table1Note->LoadFromFile( OpenDialog1->FileName ); 取出(常會出錯,小檔案也是) Table1Note->SaveToFile( SaveDialog1->FileName ); (2) Table1Note 如何動態生成, 因為每次我都是由Table1加入all fields才會有 如何由 Table1->FiledByName( "Note" ) loadfile 或 savefileBLOB要存大檔案要設定BDE的BLOB SIZE,且要BDE有支援。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
asupeduer
初階會員 發表:36 回覆:49 積分:27 註冊:2002-11-08 發送簡訊給我 |
這也是困擾我的一個問題,來插一角討論一下
以前我是學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 發送簡訊給我 |
順便附帶一題,如果將該資料表含OLE Object轉入SQL Server
可以順利轉換成功為image 資料型態,讀取上好像也沒問題,
可是就是沒辦法直接在sql server直接存入該欄位
各位前輩有沒有好方法呢?? 楊政憲
------
//------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
||
SDL
一般會員 發表:2 回覆:6 積分:6 註冊:2002-10-26 發送簡訊給我 |
引言: 這也是困擾我的一個問題,來插一角討論一下 以前我是學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 發送簡訊給我 |
關於我的問題我已解決掉了,我是使用MYSQL的BLOB,目前沒有存不進的檔案格式
而且使用方法極為簡單,至於大小限制問題則是在MYSQL的設定MAX_allowed_packet=xxM, 我使用它來存圖檔(scanner)和文件資料 --------------------------------------------------------------------
請問一下,你在前端使用程式呼叫時,都怎麼做呢?
怎麼把圖檔或檔案叫出來,也是呼叫OLE Package的方法嗎?
實做上程式碼怎麼寫呢?是用Ole Container這個元件嗎??
其實我想做的是同一個欄位,存放不同種類的資料,有其他方法在前端呼叫時,
直接開啟該檔案(不論是圖檔,文字,甚至Flash,EXE,ppt,exl)嗎? 楊政憲
------
//------------------------------------------------ 我常在想,寫程式跟爬格子到底有什麼不同呢??????????? //------------------------------------------------ |
||
SDL
一般會員 發表:2 回覆:6 積分:6 註冊:2002-10-26 發送簡訊給我 |
引言: 關於我的問題我已解決掉了,我是使用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是完完整整的將檔案存起來也不管你的資料格式是啥隨便你玩,只是請注意一下容量大小,若你是經由端 伺服器那麼最好有經過特別處理或不純放太大檔案 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |