Beispiel #1
0
 public SqlStream(SqlCommand p_SqlCommand, ISqlValueSerializer p_SqlValueSerializer,
                  DuplicateColumnNameProcess p_DuplicateColumnNameProcess = DuplicateColumnNameProcess.DuplicateNameException,
                  IEnumerable <ISqlStreamHeader> p_SqlStreamHeader        = null, Action <DataTable> p_DataTableSchemaCreated = null)
 {
     _DataReader = p_SqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
     try
     {
         _StreamEngine = new SqlStreamEngine(_DataReader, new MemoryStream(), p_SqlValueSerializer, p_DuplicateColumnNameProcess, p_SqlStreamHeader,
                                             p_DataTableSchemaCreated);
     }
     catch
     {
         _DataReader.Close();
         _DataReader.Dispose();
         throw;
     }
 }
Beispiel #2
0
        public object ReadHeader(Stream p_Stream, int p_BufferSize = StreamToDataTableRows.DefaultCopyBufferSize)
        {
            DataSet ds = new DataSet();

            //read size as integer
            byte[] schemaLenBytes = new byte[4];
            p_Stream.Read(schemaLenBytes, 0, 4);
            int schemaLen = BitConverter.ToInt32(schemaLenBytes, 0);

            //copy from p_Stream (limited bytes) to new MemoryStream and deserialize schema and create emtpy Table
            using (MemoryStream ms = new MemoryStream())
            {
                SqlStreamEngine.CopyStreamWithLengthLimit(p_Stream, ms, schemaLen, p_BufferSize);
                ms.Position = 0;
                ds.ReadXmlSchema(ms);
            }
            return(ds.Tables[0]);
        }