//// // // //方法功能:读取个人签名到内存 //private byte[] LoadMarkImage(string szSql) { //bool mResult = false; byte[] m_bytFileBody = null; System.IO.MemoryStream oStream = null; System.IO.BinaryWriter oWriter = null; try { //string szSelectCmd = "SELECT c.MarkBody FROM OA_ESignature c where c.CO='XF01' and c.UserId='" + userid + "'"; //if (m_oDbHelper == null) //{ // m_oDbHelper = new DbHelper(); //} //m_oDbHelper.OpenDbResource(); DbCommand mCommand = m_oDbHelper.CreateDbCommand(); mCommand.CommandType = CommandType.Text; mCommand.CommandText = szSql; IDataReader oReader = mCommand.ExecuteReader(System.Data.CommandBehavior.SequentialAccess); // LogCentral.CurrentLogger.LogInfo(); if (oReader.Read()) { if (!oReader.IsDBNull(0)) { int bufferSize = 500; // Size of the BLOB buffer. byte[] outbyte = new byte[bufferSize]; // The BLOB byte[] buffer to be filled by GetBytes. long retval; // The bytes returned from GetBytes. long startIndex = 0; // The starting position in the BLOB output. // Get ACL By BLOB ColumnType oStream = new System.IO.MemoryStream(); oWriter = new System.IO.BinaryWriter(oStream, System.Text.Encoding.UTF8); startIndex = 0; retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL // Continue reading and writing while there are bytes beyond the size of the buffer. while (retval == bufferSize) { oWriter.Write(outbyte); oWriter.Flush(); startIndex += bufferSize; retval = oReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); //ItemACL } // Write the remaining buffer. oWriter.Write(outbyte, 0, (int)retval); } //m_szFileType = oReader.GetString(1).ToString(); // mResult = true; } //else //{ // mResult = false; //} oReader.Close(); oReader = null; m_bytFileBody = oStream.GetBuffer(); //LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.ToString()); LogCentral.CurrentLogger.LogInfo("m_bytFileBody:" + m_bytFileBody.Length); } catch (Exception e) { LogCentral.CurrentLogger.LogInfo(e.ToString()); //mResult = false; } finally { //m_oDbHelper.CloseDbResource(); try { if (oWriter != null) { oWriter.Flush(); oWriter.Close(); } } catch { } try { if (oStream != null) oStream.Close(); } catch { } } return m_bytFileBody; }