6
我正在嘗試從Oracle數據庫中讀取BLOB。函數GetFileContent將p_file_id作爲參數並返回一個BLOB。 BLOB是需要在某個文件夾中寫入的DOCX文件。但我無法弄清楚如何閱讀BLOB。試圖讀取blob
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
值爲{byte [9946]}後,肯定會有東西存儲在return_value-paramater中。但我在執行時遇到錯誤
long retrievedBytes = reader.GetBytes(1, startIndex, buffer, 0, ChunkSize);
它說InvalidOperationException被捕獲:「沒有數據存在行或列。
下面是代碼:
cmd = new OracleCommand("GetFileContent", oraCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("p_file_id", OracleType.Number).Direction = ParameterDirection.Input;
cmd.Parameters[0].Value = fileID;
cmd.Parameters.Add("return_value", OracleType.Blob).Direction = ParameterDirection.ReturnValue;
cmd.Connection.Open();
OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
reader.Read();
MemoryStream memory = new MemoryStream();
long startIndex = 0;
const int ChunkSize = 256;
while (true)
{
byte[] buffer = new byte[ChunkSize];
long retrievedBytes = reader.GetBytes(1, startIndex, buffer, 0, ChunkSize); //FAILS
memory.Write(buffer, 0, (int)retrievedBytes);
startIndex += retrievedBytes;
if (retrievedBytes != ChunkSize)
break;
}
cmd.Connection.Close();
byte[] data = memory.ToArray();
memory.Dispose();
我怎樣才能讀取功能的BLOB?
任何最終解決方案與完整的源代碼示例工作呢? – Kiquenet 2013-10-29 15:00:46