Example #1
0
        /// <summary>
        /// parse header part of the result set
        /// </summary>
        bool Parse_Header_Content(MySqlStreamReader reader)
        {
            if (!reader.Ensure(_currentHeader.ContentLength))
            {
                return(_needMoreData = true);
            }
            //can parse
            var resultSetHeaderPacket = new ResultSetHeaderPacket(_currentHeader);

            resultSetHeaderPacket.ParsePacketContent(reader);
            _tableHeader = new TableHeader(this.ForPrepareResult);

            _parsingState = ResultPacketState.Field_Header;
            _rows         = new List <DataRowPacket>();
            return(false);
        }
Example #2
0
        public void Setup(TableHeader tableHeader)
        {
            _tableHeader = tableHeader;

            int fieldCount = tableHeader.ColumnCount;

            _preparedValues = new MyStructData[fieldCount];


            if (_keys.Count != fieldCount)
            {
                throw new Exception("key num not matched!");
            }
            //add field information to _keys

            List <FieldPacket> fields = tableHeader.GetFields();

            for (int i = 0; i < fieldCount; ++i)
            {
                _keys[i].fieldInfo = fields[i];
            }
        }
Example #3
0
        bool Parse_PrepareOk_Content(MySqlStreamReader reader)
        {
            if (!reader.Ensure(_currentHeader.ContentLength))
            {
                return(_needMoreData = true);
            }
            var okPrepare = new OkPrepareStmtPacket(_currentHeader);

            okPrepare.ParsePacketContent(reader);
            _okPrepare = okPrepare;
            //----------------------------------------------------
            _tableHeader = new TableHeader(true);
            //----------------------------------------------------
            //*** 3 possible way after read prepare ok header***
            if (okPrepare.num_params == 0)
            {
                //if prepare stmt dosn't have binding parameters
                if (okPrepare.num_columns > 0)
                {
                    //has some column
                    _parsingState = PrepareResponseParseState.ColumnField_Header;
                }
                else
                {
                    _finalResult  = new MySqlPrepareResponseResult(okPrepare, _tableHeader);
                    _parsingState = PrepareResponseParseState.ShouldEnd;
                    reader.Reset();
                    return(true); //finish
                }
            }
            else
            {
                _parsingState = PrepareResponseParseState.BindingField_Header;
            }
            return(false);
        }
Example #4
0
        void ParseResultSet()
        {
            ResultSetHeaderPacket resultPacket = new ResultSetHeaderPacket();

            resultPacket.ParsePacket(_parser);

            this._tableHeader       = new TableHeader();
            _tableHeader.TypeCast   = typeCast;
            _tableHeader.NestTables = nestTables;
            _tableHeader.ConnConfig = _conn.config;

            bool protocol41 = _conn.IsProtocol41;

            while (_receiveBuffer[_parser.Position + 4] != EOF_CODE)
            {
                FieldPacket fieldPacket = ParseColumn();
                _tableHeader.AddField(fieldPacket);
            }

            EofPacket fieldEof = ParseEOF();

            //-----
            _lastRow = new RowDataPacket(_tableHeader);
        }
Example #5
0
        public PreparedContext(uint statementId, SqlStringTemplate sqlStringTemplate, TableHeader tableHeader)
        {
            this.statementId   = statementId;
            _sqlStringTemplate = sqlStringTemplate;
            _keys = _sqlStringTemplate.GetValueKeys();
            //----------------------------------------------
            _tableHeader = tableHeader;
            int serverFieldCount = tableHeader.ColumnCount;
            //add field information to _keys
            List <FieldPacket> fields = tableHeader.GetFields();
            //----------------------------------------------
            int bindingCount = 0;

            for (int i = 0; i < serverFieldCount; ++i)
            {
                FieldPacket f = fields[i];
                if (f.name == "?") //
                {
                    //this is binding field
                    _keys[bindingCount].fieldInfo = f;
                    bindingCount++;
                }
            }
            //some field from server is not binding field
            //so we select only binding field
            if (bindingCount != _keys.Count)
            {
                throw new Exception("key num not matched!");
            }
            //-------------------------------------------------
            _preparedValues = new MyStructData[bindingCount]; //***
        }
 public MySqlPrepareResponseResult(OkPrepareStmtPacket okPrepare, TableHeader tableHeader)
 {
     this.okPacket    = okPrepare;
     this.tableHeader = tableHeader;
 }
 public MySqlTableResult(TableHeader tableHeader, DataRowPacket[] rows)
 {
     this.tableHeader = tableHeader;
     this.rows        = rows;
 }
Example #8
0
 public PreparedContext(uint statementId, SqlStringTemplate sqlStringTemplate, TableHeader tableHeader)
 {
     this.statementId = statementId;
     _sqlStringTemplate = sqlStringTemplate;
     _keys = _sqlStringTemplate.GetValueKeys();
     //----------------------------------------------
     _tableHeader = tableHeader;
     int serverFieldCount = tableHeader.ColumnCount;
     //add field information to _keys
     List<FieldPacket> fields = tableHeader.GetFields();
     //----------------------------------------------
     int bindingCount = 0;
     for (int i = 0; i < serverFieldCount; ++i)
     {
         FieldPacket f = fields[i];
         if (f.name == "?") //
         {
             //this is binding field
             _keys[bindingCount].fieldInfo = f;
             bindingCount++;
         }
     }
     //some field from server is not binding field
     //so we select only binding field
     if (bindingCount != _keys.Count)
     {
         throw new Exception("key num not matched!");
     }
     //-------------------------------------------------
     _preparedValues = new MyStructData[bindingCount]; //***
 }
Example #9
0
 public RowPreparedDataPacket(TableHeader tableHeader)
 {
     _tableHeader = tableHeader;
     _myDataList  = new MyStructData[tableHeader.ColumnCount];
     _config      = tableHeader.ConnConfig;
 }
 public MySqlTableResult(TableHeader tableHeader, List<DataRowPacket> rows)
 {
     this.tableHeader = tableHeader;
     this.rows = rows; 
 }
 public MySqlPrepareResponseResult(OkPrepareStmtPacket okPrepare, TableHeader tableHeader)
 {
     this.okPacket = okPrepare;
     this.tableHeader = tableHeader;
 }
 internal SubTableHeader(TableHeader tableHeader)
 {
     this.tableHeader = tableHeader;
 }
 bool Parse_PrepareOk_Content(MySqlStreamReader reader)
 {
     if (!reader.Ensure(_currentHeader.ContentLength))
     {
         return _needMoreData = true;
     }
     var okPrepare = new OkPrepareStmtPacket(_currentHeader);
     okPrepare.ParsePacketContent(reader);
     _okPrepare = okPrepare;
     //----------------------------------------------------
     _tableHeader = new TableHeader(true);
     //----------------------------------------------------
     //*** 3 possible way after read prepare ok header***
     if (okPrepare.num_params == 0)
     {
         //if prepare stmt dosn't have binding parameters
         if (okPrepare.num_columns > 0)
         {
             //has some column
             _parsingState = PrepareResponseParseState.ColumnField_Header;
         }
         else
         {
             _finalResult = new MySqlPrepareResponseResult(okPrepare, _tableHeader);
             _parsingState = PrepareResponseParseState.ShouldEnd;
             reader.Reset();
             return true; //finish
         }
     }
     else
     {
         _parsingState = PrepareResponseParseState.BindingField_Header;
     }
     return false;
 }
        /// <summary>
        /// parse header part of the result set
        /// </summary>
        bool Parse_Header_Content(MySqlStreamReader reader)
        {
            if (!reader.Ensure(_currentHeader.ContentLength))
            {
                return _needMoreData = true;
            }
            //can parse
            var resultSetHeaderPacket = new ResultSetHeaderPacket(_currentHeader);
            resultSetHeaderPacket.ParsePacketContent(reader);
            _tableHeader = new TableHeader(this.ForPrepareResult);

            _parsingState = ResultPacketState.Field_Header;
            _rows = new List<DataRowPacket>();
            return false;
        }