在ASP中讀取ORACLE中的BLOB型別的欄位的值,不用Oracle Object for Object (轉)
這是第一天在CSDN上發表文件,目的是困惑了兩天的問題終於解決了,說出來,與大家共享一下,希望對遇到這樣問題的朋友有所幫助。
是這樣的,我們在PB中用F1,把報表以格式存貯在中,我們剛開始用一個LONG RAW型欄位來存放EXCEL大,然後,存進去了幾個小的EXCEL,做了測試,可以把LONG RAW欄位的EXCEL大物件讀出來,然後,在中以EXCEL的格式把EXCEL檔案顯示出來。
因為測試程式成功。所以我們開始往表中存EXCEL檔案,然後又用測試程式測試,出現了錯誤,錯誤提示是遇到末處理的資料型別,苦思明想了兩天,查了很多的資料,也沒找到原因,後來一想,是不是我們把該表調整了一下,把EXCEL大物件存在了LONG型的欄位中,後來就又把LONG型改成了LONG ROW 型,測試程式如下:
Dim conn
Dim StrConn
Dim rs
Dim
Set conn=Server.Create("ADO.Connection")
StrConn = "={ ODBC for oracle};server=dcmis;UID=custometable;Pwd=custometable;"
conn.Open StrConn
sql=" blob_excel FROM sttb_databldinfo where v_databldid = '00000001'"
Set rs =conn.execute(sql)
Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-excel"
response.write rs("blob_excel") 'blob_excel欄位存的是EXCEL檔案
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
然後存進了一個很小的EXCEL進行測試,測試又成功了!
就又存進了幾個非常大的EXCEL,這時測試又出現了錯誤!
遇到末處理的資料型別!
這是什麼原因呢?會不會是我們存的EXCEL過大?
我在測試程式中加入了以下幾行:
set field = rs("blob_excel")
fieldSize = field.ActualSize
response.write "fieldsize:"&fieldSize
response.end
進行測試,發現當存進去的EXCEL較小時,輸出的fieldsize是真實的欄位的大小,但當EXCEL較大時,輸出的fieldsize卻都是4,
終於找到了原因,原來如此,就又修改了程式,如下:
Dim conn
Dim StrConn
Dim rs
Dim Sql
Set conn=Server.CreateObject("ADODB.Connection")
StrConn = "driver={Microsoft ODBC for oracle};server=dcmis;UID=custometable;Pwd=custometable;"
conn.Open StrConn
sql="SELECT blob_excel FROM sttb_databldinfo where v_databldid = '00000001'"
Set rs =conn.execute(sql)
size =32765
i=0
'set field = rs("blob_excel")
'fieldSize = field.ActualSize
'response.write "size:"&fieldSize
'response.end
Response.Buffer = TRUE Response.ContentType = "application/vnd.ms-excel" rs.close set rs=nothing conn.close set conn=nothing %> 這樣EXCEL就能正常顯示。 總結如下: 使用AD0資料庫連線,必須採用LONG RAW欄位才能夠在網頁中正常顯示EXCEL大物件,而且要採用迴圈讀取大物件的方法進行。 對於BLOB欄位同樣如此,但有一點注意:,用ADO連線ORACLE資料庫,不支援BLOB,打不開含有BLOB欄位的記錄集。
dim s_stream
Do
'以Rs記錄集的Fields物件的DbGetChunk方法在迴圈中讀出資料
text=rs.Fields("blob_excel").GetChunk(size)
Response.binarywrite text
'求出每次取出資料的詳細位元組數
text_size=Lenb(text)
i=i+1
'如果每次取出資料的詳細位元組數小於欲定義的擷取位元組大小則說明該條資料已經完畢,退出迴圈。
L until text_size
必段採用OO4O連線ORACLE資料庫。BLOB存取方法同上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-981617/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中Blob欄位的寫入處理(一) (轉)Oracle
- MySQL中TEXT與BLOB欄位型別的區別MySql型別
- Oracle中object_id和data_object_id的區別OracleObject
- JavaScript中的Object的引用型別JavaScriptObject型別
- TypeScript 中令人迷惑的物件型別:Object、{} 和 objectTypeScript物件型別Object
- 在VC中用OLE DB讀寫SQL Server中的BLOB欄位 (轉)SQLServer
- oracle的欄位型別Oracle型別
- 關於oracle中blob欄位的錄入問題Oracle
- Js實現Object按照值的某個欄位(數值型別)的大小進行排序JSObject型別排序
- oracle建立型別之objectOracle型別Object
- GORM 如何讀取別名欄位的值GoORM
- oracle 修改欄位型別的方法Oracle型別
- Oracle中的Rownum 欄位Oracle
- Oracle中的大欄位Oracle
- Object Pascal中String型別的內幕探討 (轉)Object型別
- Oracle lob載入bfile資料到blob欄位中Oracle
- ORACLE MYSQL中join 欄位型別不同索引失效的情況OracleMySql型別索引
- JSON欄位型別在ORM中的使用JSON型別ORM
- MongoDB中的欄位型別IdMongoDB型別
- 轉載:Oracle常用的資料庫欄位型別Oracle資料庫型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- java中判斷Object物件型別JavaObject物件型別
- 在 oracle 中實現 sql server 中的在 create object 時的判斷與刪除功能OracleSQLServerObject
- MongoDB Java開發從Mongo讀取Object值轉Long異常引起的資料型別轉換異常MongoDBJavaObject資料型別
- Java獲取Object中Value的方法JavaObject
- SQL Server中text型別匯入oracle clob欄位時的設定SQLServer型別Oracle
- varchar or blob:欄位型別的儲存和溢位條件型別
- Oracle user_tab_partitions.high_value欄位 LONG型別 讀取的幾種方法Oracle型別
- Oracle中的鎖型別Oracle型別
- 請教大家了,JAVA讀取oracle的number(9)的資料欄位讀出來是什麼型別JavaOracle型別
- oracle中lob欄位Oracle
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- oracle的long型別欄位的應用-- 實戰篇Oracle型別
- oracle的long型別欄位的應用-- 知識篇Oracle型別
- ORACLE9I中建立自增欄位的方法(轉)Oracle
- Oracle中的TIMESTAMP型別Oracle型別
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫