/// <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); }
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]; } }
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); }
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); }
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; }
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 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; }