public void ThrowIfErrorPacket() { if (IsErrorPacket()) { throw ErrorPacket.Parse(ref this).ToMySqlException(); } }
public StatementPrepareOk Prepare(string query) { var stream = client.GetStream(); var readWriteBuffer = InternalMemoryPool.GetBuffer(); var writer = PacketWriter.Create(readWriteBuffer); ProtocolWriter.WritePrepareStatement(ref writer, query); var reader = SyncWriteAndRead(ref writer, 0, stream); // COM_STMT_PREPARE_OK on success, ERR_Packet otherwise if (reader.IsErrorPacket()) { throw ErrorPacket.Parse(ref reader).ToMySqlException(); } return(ProtocolReader.ReadStatementPrepareOk(ref reader)); }
public override bool Read() { rowReader = rowReader.CreateNextReader(); if (rowReader.IsEofPacket()) { return(false); } else if (rowReader.IsErrorPacket()) { throw ErrorPacket.Parse(ref rowReader).ToMySqlException(); } for (int i = 0; i < rowData.Length; i++) { rowData[i] = rowReader.ReadLengthEncodedStringSegment(); } return(true); }
public BinaryResultSet Execute(int statementId, params object[] parameters) // how to avoid boxing? { var stream = client.GetStream(); var readWriteBuffer = InternalMemoryPool.GetBuffer(); var writer = PacketWriter.Create(readWriteBuffer); ProtocolWriter.WriteExecuteStatement(ref writer, statementId, parameters); var reader = SyncWriteAndRead(ref writer, 0, stream); // COM_STMT_PREPARE_OK on success, ERR_Packet otherwise if (reader.IsErrorPacket()) { throw ErrorPacket.Parse(ref reader).ToMySqlException(); } // TODO: Ok or ResultSet? var set = ProtocolReader.ReadBinaryResultSet(ref reader); return(set); }