首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC 操作 Oracle BLOB 超 4000 字節失效:Provider 必須用 OraOLEDB 而非 MSDAORA

     編輯:程式設計綜合問答

VC (ADO) 寫入 Oracle `BLOB` 超 4000 字節時字段變空,根因:**連接字符串 Provider 錯誤**。

錯誤連接

Provider=MSDAORA.1; ...  // 微軟舊驅動,對 LOB 支持有 4000 字節限制

正確連接

Provider=OraOLEDB.Oracle.1; 
Data Source=ORCL; 
User ID=scott; Password=tiger;

需安裝 **Oracle Data Access Components (ODAC)** 或 **OLE DB Provider for Oracle (OraOLEDB)**,隨 Oracle Client 安裝或單獨下載。

關鍵代碼片段

_CommandPtr Cmd;
Cmd.CreateInstance(__uuidof(Command));
Cmd->ActiveConnection = pConnection; // 已用 OraOLEDB 打開
Cmd->CommandText = "UPDATE mytab SET blob_col = ? WHERE id = 1";
Cmd->CommandType = adCmdText;

_variant_t varBlob; // 裝載 BLOB 數據 (SAFEARRAY/byte[])
Cmd->Parameters->Append(Cmd->CreateParameter("@blob", adLongVarBinary, adParamInput, -1, varBlob));
Cmd->Execute(NULL, NULL, adCmdText);

驗證

  • PL/SQL Developer 可寫入 >4000 字節證明數據庫無問題。
  • 切換 Provider 後 VC 寫入同樣數據成功,證實是驅動層限制。

補充:Oracle 12c+ 建議改用 **ODP.NET Managed Driver** (C#) 或 **JDBC Thin Driver** (Java),ADO/OLEDB 屬舊技術棧,新項目勿用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved