| 導購 | 订阅 | 在线投稿
分享
 
 
 

講解三種存取備注二進制信息的方法

來源:互聯網  2008-06-01 00:00:58  評論

前言:在數據庫的開發過程中,經常需要在數據庫中存儲一些備注信息,而這些備注信息的內容一般較大,格式多樣-如有可能是語音文件、視頻文件、圖片文件、文本文件等,怎樣在PB中實現這些格式不同的備注文件的存取及預覽,一直是PB開發人員比較關心的一個問題,本文系統的介紹了三種存取備注二進制信息的方法。

對備注二進制信息的存儲可以采用以下三種方式;

方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱

方法二:數據庫中用blob類型或者varbinary類型字段存儲備注文件

方法三:在本地用OLE存儲結構存儲備注文件

1、OLE的基本概念

OLE是Object Linking Embedding(對象鏈結與嵌入)的縮寫,它可以使windows應用程序共享數據和程序。

2、OLE控件

在PB中OLE控件是一個OLE對象的包容器,可以使用服務器應用程序提供的功能和命令來編輯對象,也可以使用自動化OLE交互,在程序中激活對象和向服務器應用程序發送命令;在PB 的window畫板中的OLE控件允許用戶從多個應用程序嵌入和鏈結組件

2.1建立和設置OLE控件

從window畫板中選擇OLE控件插入window。

當建立一個OLE控件並且插入一個對象時,PB將激活服務器應用程序以允許對對象進行編輯和修改;在使OLE中的對象稱爲非活動狀態後,可以使用控件屬性選項卡來設置控件的屬性。

2.2 激活修改window畫板中的OLE對象

在OLE控件的彈出菜單中選擇open可以激活畫板中OLE對象

使用服務器應用程序修改OLE對象

結束修改:使對象恢複爲非活動狀態,只要單擊服務器應用對象之外的任何區域即可,也可以直接關閉服務器應用程序的窗口。

2.3 嵌入和鏈結OLE控件

可以將OLE對象嵌入或者鏈結到自己的應用程序中。嵌入對象的數據放在應用程序中,在開發過程中這些數據放在應用程序的PBl庫中,當生成應用後,這些數據將存放在exe或PBd文件中,雖然在程序的運行過程中可以修改,但修改的數據不會保存;鏈結對象的數據存放在PB應用程序以外,當鏈結一個對象時,在PB應用程序中不存放數據文件,而是存放引用數據的指針, 使用鏈結的數據,對數據的管理和保存都由服務器應用程序負責。這樣可以用服務器應用程序修改處理數據,處理後的數據可以保存回原文件中。鏈結方式應用于需要多個應用程序共享的數據文件,任何一個應用程序修改了數據文件,都將影響到所有鏈結該文件的應用程序。

2.4 OLE控件的激活方式

OLE控件的激活方式有offsite和in-place兩種激活方式,offsite激活方式是指在PB應用程序的界面以外單獨打開OLE對象,in -place激活方式是指PB應用程序的界面的原位置打開OLE對象。在數據窗口中的dbOLE默認的是offsite激活方式,而window中的 OLE默認的激活方式是in-place。

在PB應用程序中可以用命令OLE_control.active(offsite) 或者OLE_control.active(in-place)設置OLE對象的以何種方式打開。

2.5 設置和插入OLE對象

在程序運行時可以用函數:

OLE_control.insertfile(soucefile) 插入對象

OLE_control.objectdata = blobvar 設置對象

3、OLE存儲

3.1 OLE存儲(OLEstorage)的概念

OLE存儲(OLEstorage)是OLE數據的一個倉庫,存儲就象磁盤上的目錄結構,它可以是一個OLE對象,也可以包含在OLE對象中,每個對象都包含在 OLE存儲或者存儲內的子存儲內。保存在OLE存儲中數據稱作OLE流(OLE stream),OLE流同OLE對象的關系就象文件同目錄的關系。含有 OLE對象的存儲或子存儲可以看做是屬于特殊服務器的信息,在該層次之下的各部分都可以被相應的服務器程序操作。OLE存儲對象是類用戶對象,可以說明相應類型的變量,建立與之相應的實例和打開存儲等,在使用完存儲後需要關閉存儲、釋放分配的內存。

3.2 OLE存儲的打開和保存

OLE存儲可以用open函數打開,open函數的格式爲: Olecontrol.Open(OLEsourcefile),

此函數在OLEsourcefile不存在時,自動創建該文件,所以創建OLE文件也用該函數; OLE存儲可以用save函數保存,save函數的格式爲:

OLEcontrol.save() // 保存OLE控件

OLEstorage.save() //保存OLE存儲

4、處理blob類型數據

對于大二進制數據,在PB Script中是用blob數據類型表示並加以處理。標准SQL語句中的select、insert和update語句無法直接查詢blob類型的數據,在PB中操作blob類型的數據只能用專用的語句,從數據庫中查詢blob類型的數據的命令是:

selectblob restofselectstatement {using transactionobject};

更新數據庫中blob類型數據的格式是:

updateblob tablename

set blobcolumn = blobvarible

restofupatestatement {using transctionobject};

如連接的數據庫是sybase或者Sql,則selectblob和updateblob語句要求數據庫的自動提交方式爲true,所以在在每次調用selectblob和updateblob語句以前必須用命令 Sqlca.autocommit=true,把數據庫的自動提交方式設置爲true,在updateblob語句的結束後,再用命令Sqlca.autocommit = false,把自動提交方式設置爲 false。 索數據的參數(如flag),然後在可修改列的Protect後的框中輸入(user_name是該DataWindow中的一列,代表輸入者的名稱):

5、數據窗口的blob列

5.1 數據窗口blob列的功能

在PB 的datawindow畫板中DBOLE控件允許用戶利用這個控件浏覽和操作數據庫中的大二進制數據,即通過DBOLE控件可以作如下操作:

往數據庫中存儲大二進制數據,如:excel工作表、word文檔、視頻文件、圖片文件等各種格式的文件;

● 從數據庫中檢索數據到datawindow對象;

● 使用OLE服務器程序察看修改數據;

● 將修改後的數據保存回數據庫;

5.2 在數據窗口中添加blob列的的步驟

1) 選擇具有二進制字段的數據表作爲數據源建立一新的數據窗口(該窗口可以至少需要包含非數據庫表的標識列)

2) 選擇insert -control-OLE database blob 菜單,在數據窗口的detail節中要插入blob列的位置單擊鼠標,這時將顯示如圖1所示的對話框

下面解釋這些屬性的具體含義

1) client class: 客戶類名,默認爲datawindow

2) client name:客戶名,默認爲untitled

3) table: 選擇含有blob列的數據庫表,所選表的字段將出現在右側的large binary/text column列表框中。

4) large binary/text column:選擇一個blob類型的字段列

5) key clause:檢索和更新blob數據的關鍵字表達式其中使用帶冒號前綴的變量指出是數據窗口對象的列,如 表達式 id=:id,id是數據庫表中的列,變量指出數據窗口對象的列

6) filetemplate :如果需要OLE應用服務器每次打開相同的文件,則在filetemplate框中輸入文件名。

7) OLE class :如果不需要OLE應用服務器每次打開相同的文件,則在OLE class框中選擇一個OLE類,如Pbrush。

8) Client name expression:顯示在OLE服務器應用程序窗口標題的文字,可以輸入爲:"對應記錄的id號是"+id

單擊ok按鈕關閉對話框,將dbole列添加到適當的位置,保存數據窗口。

預覽則可以對數據庫中的blob數據進行存取,但是在新建的記錄中只能存取OLE class框中選擇的一種格式的blob數據,不能存儲多種格式的數據;但如果數據庫中存有多種格式的數據,可以預覽各種格式的數據。

6、源程序建立

1) 首先在數據庫中建立如下結構的表blobsave:

字段名稱數據類型備注

idchar(4)primairy key index

s_pathchar(50)

picbinary (50)

2) 在PB建立PBl庫blobsave.PBl

3) 在PBl庫blobsave.PBl中建立應用blobsave

在應用的open事件中設置數據庫連接程序(本程序中采用的是odbc方式連接數據庫,讀者可根據自己所建立的數據庫的不同選用不同的連接方式,以下連接數據庫的代碼也有所改動,至于連接不同的數據庫的方法,請參考有關資料,本文不做詳細介紹):

SQLCA.DBMS = "ODBC"

SQLCA.AutoCommit = False

SQLCA.DBParm = "Connectstring="DSN=blob""

connect;

open(w_main)

其中命令按鈕cb_path的clicked中的代碼格式如下:open(w_path)

其中命令按鈕cb_dbblob的clicked中的代碼格式如下:open(w_dbblob)

其中命令按鈕cb_OLEblob的clicked中的代碼格式如下:open(w_OLEblob)

4) 建立數據窗口dw_blobsave

按照上文中建立數?荽翺诘腷lob列的方法建立數據窗口dw_blobsave如圖所示:

其中:add,del,save,cancel,,retrieve等分別爲數據窗口dw_blobsave的append row,delete row,update,retrieve動作按鈕。

首先創建實例變量 OLEstorage stor1

然後如圖建立窗口w_path,其中數據窗口控件dw_1的rowfocuschanged中的代碼如下:

long row_num

row_num=dw_1.getrow()

if row_num >0 then

ole_1.insertfile(dw_1.object.s_path[row_num])

end if

其中數據窗口dw_1的buttonclicked中的代碼如下:

if dwo.name="cbselect" then

long row_num

row_num=dw_1.getrow()

string filepath,filename

getfileopenname("請選擇備注文件",filepath,filename)

dw_1.object.s_path[row_num]=filepath

ole_1.insertfile(filepath)

end if

保存窗口w_path

6) 建立窗口w_dbblob

打開w_path,把其另存爲w_dbblob,改變數據窗口dw_1的rowfocuschanged中的代碼如下:

blob text1

long row_num

row_num=dw_1.getrow()

if row_num>0 then

string id

id = dw_1.object.id[row_num]

sqlca.autocommit=true

selectblob pic into :text1 from blobsave where id = :id;

ole_1.objectdata=text1

sqlca.autocommit=false

end if

改變數據窗口dw_1的buttonclicked中的代碼如下:

long row_num

if dwo.name="cbselect" then

row_num=dw_1.getrow()

string filepath,filename

getfileopenname("請選擇備注文件",filepath,filename)

dw_1.object.s_path[row_num]=filepath

ole_1.insertfile(filepath)

end if

if dwo.name="cbsave" then

string id

sqlca.autocommit = true

blob text1

text1 = ole_1.objectdata

dw_1.update()

commit;

row_num=dw_1.getrow()

id=dw_1.object.id[row_num]

updateblob blobsave

set pic = :text1

where id = :id ;

commit;

sqlca.autocommit = FALSE

dw_1.retrieve()

dw_1.scrolltorow(row_num)

end if

保存窗口w_dbblob

7) 建立窗口w_OLEblob

打開w_path,把其另存爲w_OLEblob,在窗口w_OLEblob的open事件中寫入以下代碼:

stor1 = create olestorage

stor1.open("c:\p1.ole") //打開或創建ole文件

在窗口w_OLEblob的close事件中寫入以下代碼:

destroy stor1

改變數據窗口dw_1的rowfocuschanged中的代碼如下:

blob text1

long row_num

row_num=dw_1.getrow()

if row_num>0 then

string id

id = dw_1.object.id[row_num]

ole_1.open(stor1,"w"+id)

end if

改變數據窗口dw_1的buttonclicked中的代碼如下:

long row_num

if dwo.name="cbselect" then

row_num=dw_1.getrow()

string filepath,filename

getfileopenname("請選擇備注文件",filepath,filename)

dw_1.object.s_path[row_num]=filepath

ole_1.insertfile(filepath)

end if

if dwo.name="cbsave" then

string id

row_num=dw_1.getrow()

id=dw_1.object.id[row_num]

ole_1.saveas(stor1,"w"+id)

stor1.save()

end if

保存窗口w_OLEblob,運行應用程序即可。

7、三種方法的優缺點

方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱可以節省數據空間,避免了數據庫過分膨脹,但備注文件必須在一定的目錄下,不能丟失,且同一目錄下文件不能重名,對文件的管理造成一定的困難,另外,在OLE控件中浏覽顯示備注文件時,由于每次都要調用服務器程序,所以速度較慢。

方法二:在數據庫中用blob類型或者varbinary類型字段存儲備注文件,當文件存儲在數據庫中以後,就可以刪除硬盤上原來的臨時文件,不需要複雜的二進制文件管理,且數據庫可以存儲在網絡服務器上,對數據的共享非常方便。

方法三:在本地用OLE存儲結構存儲備注文件。可以把所有的二進制文件信息存儲在一個OLE存儲文件中,管理比較方便。當二進制文件信息存儲後,可以刪除原來的臨時文件;因爲打開存儲文件後不需要每次執行服務器程序來顯示存儲信息,所以存取速度較快。

前言:在數據庫的開發過程中,經常需要在數據庫中存儲一些備注信息,而這些備注信息的內容一般較大,格式多樣-如有可能是語音文件、視頻文件、圖片文件、文本文件等,怎樣在PB中實現這些格式不同的備注文件的存取及預覽,一直是PB開發人員比較關心的一個問題,本文系統的介紹了三種存取備注二進制信息的方法。 對備注二進制信息的存儲可以采用以下三種方式; 方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱 方法二:數據庫中用blob類型或者varbinary類型字段存儲備注文件 方法三:在本地用OLE存儲結構存儲備注文件 1、OLE的基本概念 OLE是Object Linking Embedding(對象鏈結與嵌入)的縮寫,它可以使windows應用程序共享數據和程序。 2、OLE控件 在PB中OLE控件是一個OLE對象的包容器,可以使用服務器應用程序提供的功能和命令來編輯對象,也可以使用自動化OLE交互,在程序中激活對象和向服務器應用程序發送命令;在PB 的window畫板中的OLE控件允許用戶從多個應用程序嵌入和鏈結組件 2.1建立和設置OLE控件 從window畫板中選擇OLE控件插入window。 當建立一個OLE控件並且插入一個對象時,PB將激活服務器應用程序以允許對對象進行編輯和修改;在使OLE中的對象稱爲非活動狀態後,可以使用控件屬性選項卡來設置控件的屬性。 2.2 激活修改window畫板中的OLE對象 在OLE控件的彈出菜單中選擇open可以激活畫板中OLE對象 使用服務器應用程序修改OLE對象 結束修改:使對象恢複爲非活動狀態,只要單擊服務器應用對象之外的任何區域即可,也可以直接關閉服務器應用程序的窗口。 2.3 嵌入和鏈結OLE控件 可以將OLE對象嵌入或者鏈結到自己的應用程序中。嵌入對象的數據放在應用程序中,在開發過程中這些數據放在應用程序的PBl庫中,當生成應用後,這些數據將存放在exe或PBd文件中,雖然在程序的運行過程中可以修改,但修改的數據不會保存;鏈結對象的數據存放在PB應用程序以外,當鏈結一個對象時,在PB應用程序中不存放數據文件,而是存放引用數據的指針, 使用鏈結的數據,對數據的管理和保存都由服務器應用程序負責。這樣可以用服務器應用程序修改處理數據,處理後的數據可以保存回原文件中。鏈結方式應用于需要多個應用程序共享的數據文件,任何一個應用程序修改了數據文件,都將影響到所有鏈結該文件的應用程序。 2.4 OLE控件的激活方式 OLE控件的激活方式有offsite和in-place兩種激活方式,offsite激活方式是指在PB應用程序的界面以外單獨打開OLE對象,in -place激活方式是指PB應用程序的界面的原位置打開OLE對象。在數據窗口中的dbOLE默認的是offsite激活方式,而window中的 OLE默認的激活方式是in-place。 在PB應用程序中可以用命令OLE_control.active(offsite) 或者OLE_control.active(in-place)設置OLE對象的以何種方式打開。 2.5 設置和插入OLE對象 在程序運行時可以用函數: OLE_control.insertfile(soucefile) 插入對象 OLE_control.objectdata = blobvar 設置對象 3、OLE存儲 3.1 OLE存儲(OLEstorage)的概念 OLE存儲(OLEstorage)是OLE數據的一個倉庫,存儲就象磁盤上的目錄結構,它可以是一個OLE對象,也可以包含在OLE對象中,每個對象都包含在 OLE存儲或者存儲內的子存儲內。保存在OLE存儲中數據稱作OLE流(OLE stream),OLE流同OLE對象的關系就象文件同目錄的關系。含有 OLE對象的存儲或子存儲可以看做是屬于特殊服務器的信息,在該層次之下的各部分都可以被相應的服務器程序操作。OLE存儲對象是類用戶對象,可以說明相應類型的變量,建立與之相應的實例和打開存儲等,在使用完存儲後需要關閉存儲、釋放分配的內存。 3.2 OLE存儲的打開和保存 OLE存儲可以用open函數打開,open函數的格式爲: Olecontrol.Open(OLEsourcefile), 此函數在OLEsourcefile不存在時,自動創建該文件,所以創建OLE文件也用該函數; OLE存儲可以用save函數保存,save函數的格式爲: OLEcontrol.save() // 保存OLE控件 OLEstorage.save() //保存OLE存儲 4、處理blob類型數據 對于大二進制數據,在PB Script中是用blob數據類型表示並加以處理。標准SQL語句中的select、insert和update語句無法直接查詢blob類型的數據,在PB中操作blob類型的數據只能用專用的語句,從數據庫中查詢blob類型的數據的命令是: selectblob restofselectstatement {using transactionobject}; 更新數據庫中blob類型數據的格式是: updateblob tablename set blobcolumn = blobvarible   restofupatestatement {using transctionobject}; 如連接的數據庫是sybase或者Sql,則selectblob和updateblob語句要求數據庫的自動提交方式爲true,所以在在每次調用selectblob和updateblob語句以前必須用命令 Sqlca.autocommit=true,把數據庫的自動提交方式設置爲true,在updateblob語句的結束後,再用命令Sqlca.autocommit = false,把自動提交方式設置爲 false。 索數據的參數(如flag),然後在可修改列的Protect後的框中輸入(user_name是該DataWindow中的一列,代表輸入者的名稱): 5、數據窗口的blob列 5.1 數據窗口blob列的功能 在PB 的datawindow畫板中DBOLE控件允許用戶利用這個控件浏覽和操作數據庫中的大二進制數據,即通過DBOLE控件可以作如下操作: 往數據庫中存儲大二進制數據,如:excel工作表、word文檔、視頻文件、圖片文件等各種格式的文件; ● 從數據庫中檢索數據到datawindow對象;    ● 使用OLE服務器程序察看修改數據;    ● 將修改後的數據保存回數據庫; 5.2 在數據窗口中添加blob列的的步驟 1) 選擇具有二進制字段的數據表作爲數據源建立一新的數據窗口(該窗口可以至少需要包含非數據庫表的標識列) 2) 選擇insert -control-OLE database blob 菜單,在數據窗口的detail節中要插入blob列的位置單擊鼠標,這時將顯示如圖1所示的對話框 下面解釋這些屬性的具體含義 1) client class: 客戶類名,默認爲datawindow 2) client name:客戶名,默認爲untitled 3) table: 選擇含有blob列的數據庫表,所選表的字段將出現在右側的large binary/text column列表框中。 4) large binary/text column:選擇一個blob類型的字段列    5) key clause:檢索和更新blob數據的關鍵字表達式其中使用帶冒號前綴的變量指出是數據窗口對象的列,如 表達式 id=:id,id是數據庫表中的列,變量指出數據窗口對象的列 6) filetemplate :如果需要OLE應用服務器每次打開相同的文件,則在filetemplate框中輸入文件名。 7) OLE class :如果不需要OLE應用服務器每次打開相同的文件,則在OLE class框中選擇一個OLE類,如Pbrush。 8) Client name expression:顯示在OLE服務器應用程序窗口標題的文字,可以輸入爲:"對應記錄的id號是"+id 單擊ok按鈕關閉對話框,將dbole列添加到適當的位置,保存數據窗口。 預覽則可以對數據庫中的blob數據進行存取,但是在新建的記錄中只能存取OLE class框中選擇的一種格式的blob數據,不能存儲多種格式的數據;但如果數據庫中存有多種格式的數據,可以預覽各種格式的數據。 6、源程序建立 1) 首先在數據庫中建立如下結構的表blobsave: 字段名稱 數據類型  備注 id    char(4) primairy key index s_path  char(50) pic  binary (50) 2) 在PB建立PBl庫blobsave.PBl 3) 在PBl庫blobsave.PBl中建立應用blobsave 在應用的open事件中設置數據庫連接程序(本程序中采用的是odbc方式連接數據庫,讀者可根據自己所建立的數據庫的不同選用不同的連接方式,以下連接數據庫的代碼也有所改動,至于連接不同的數據庫的方法,請參考有關資料,本文不做詳細介紹): SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "Connectstring="DSN=blob"" connect; open(w_main) 其中命令按鈕cb_path的clicked中的代碼格式如下:open(w_path) 其中命令按鈕cb_dbblob的clicked中的代碼格式如下:open(w_dbblob) 其中命令按鈕cb_OLEblob的clicked中的代碼格式如下:open(w_OLEblob) 4) 建立數據窗口dw_blobsave 按照上文中建立數?荽翺诘腷lob列的方法建立數據窗口dw_blobsave如圖所示: 其中:add,del,save,cancel,,retrieve等分別爲數據窗口dw_blobsave的append row,delete row,update,retrieve動作按鈕。 首先創建實例變量 OLEstorage stor1 然後如圖建立窗口w_path,其中數據窗口控件dw_1的rowfocuschanged中的代碼如下: long row_num row_num=dw_1.getrow() if row_num >0 then ole_1.insertfile(dw_1.object.s_path[row_num]) end if 其中數據窗口dw_1的buttonclicked中的代碼如下: if dwo.name="cbselect" then long row_num row_num=dw_1.getrow() string filepath,filename getfileopenname("請選擇備注文件",filepath,filename) dw_1.object.s_path[row_num]=filepath ole_1.insertfile(filepath) end if 保存窗口w_path 6) 建立窗口w_dbblob 打開w_path,把其另存爲w_dbblob,改變數據窗口dw_1的rowfocuschanged中的代碼如下: blob text1 long row_num row_num=dw_1.getrow() if row_num>0 then string id id = dw_1.object.id[row_num] sqlca.autocommit=true selectblob pic into :text1 from blobsave where id = :id; ole_1.objectdata=text1 sqlca.autocommit=false end if 改變數據窗口dw_1的buttonclicked中的代碼如下: long row_num if dwo.name="cbselect" then row_num=dw_1.getrow() string filepath,filename getfileopenname("請選擇備注文件",filepath,filename) dw_1.object.s_path[row_num]=filepath ole_1.insertfile(filepath) end if if dwo.name="cbsave" then string id sqlca.autocommit = true blob text1 text1 = ole_1.objectdata dw_1.update() commit; row_num=dw_1.getrow() id=dw_1.object.id[row_num] updateblob blobsave set pic = :text1 where id = :id ; commit; sqlca.autocommit = FALSE dw_1.retrieve() dw_1.scrolltorow(row_num) end if 保存窗口w_dbblob 7) 建立窗口w_OLEblob 打開w_path,把其另存爲w_OLEblob,在窗口w_OLEblob的open事件中寫入以下代碼: stor1 = create olestorage stor1.open("c:\p1.ole") //打開或創建ole文件 在窗口w_OLEblob的close事件中寫入以下代碼: destroy stor1 改變數據窗口dw_1的rowfocuschanged中的代碼如下: blob text1 long row_num row_num=dw_1.getrow() if row_num>0 then string id id = dw_1.object.id[row_num] ole_1.open(stor1,"w"+id) end if 改變數據窗口dw_1的buttonclicked中的代碼如下: long row_num if dwo.name="cbselect" then row_num=dw_1.getrow() string filepath,filename getfileopenname("請選擇備注文件",filepath,filename) dw_1.object.s_path[row_num]=filepath ole_1.insertfile(filepath) end if if dwo.name="cbsave" then string id row_num=dw_1.getrow() id=dw_1.object.id[row_num] ole_1.saveas(stor1,"w"+id) stor1.save() end if 保存窗口w_OLEblob,運行應用程序即可。 7、三種方法的優缺點 方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱可以節省數據空間,避免了數據庫過分膨脹,但備注文件必須在一定的目錄下,不能丟失,且同一目錄下文件不能重名,對文件的管理造成一定的困難,另外,在OLE控件中浏覽顯示備注文件時,由于每次都要調用服務器程序,所以速度較慢。 方法二:在數據庫中用blob類型或者varbinary類型字段存儲備注文件,當文件存儲在數據庫中以後,就可以刪除硬盤上原來的臨時文件,不需要複雜的二進制文件管理,且數據庫可以存儲在網絡服務器上,對數據的共享非常方便。 方法三:在本地用OLE存儲結構存儲備注文件。可以把所有的二進制文件信息存儲在一個OLE存儲文件中,管理比較方便。當二進制文件信息存儲後,可以刪除原來的臨時文件;因爲打開存儲文件後不需要每次執行服務器程序來顯示存儲信息,所以存取速度較快。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有