package com.meidusa.amoeba.mysql.net.packet.result; import com.meidusa.amoeba.mysql.jdbc.MysqlDefs; import com.meidusa.amoeba.mysql.net.packet.EOFPacket; import com.meidusa.amoeba.mysql.net.packet.FieldPacket; import com.meidusa.amoeba.mysql.net.packet.OKforPreparedStatementPacket; import com.meidusa.amoeba.net.Connection; public class PreparedResultPacket extends ErrorResultPacket{ private int parameterCount; private long statementId; public long getStatementId() { return statementId; } public void setStatementId(long statementId) { this.statementId = statementId; } public void setParameterCount(int count){ this.parameterCount = count; } public int getParameterCount() { return parameterCount; } public void wirteToConnection(Connection conn) { if(this.isError()){ super.wirteToConnection(conn); }else{ OKforPreparedStatementPacket okPaket = new OKforPreparedStatementPacket(); okPaket.columns = 1; okPaket.packetId = 1; byte packetId = 1; okPaket.parameters = parameterCount; okPaket.statementId = statementId; conn.postMessage(okPaket.toByteBuffer(conn)); if(parameterCount>0){ for(int i=0;i<parameterCount;i++){ FieldPacket field = new FieldPacket(); field.packetId = (byte)(++packetId); conn.postMessage(field.toByteBuffer(conn)); } EOFPacket eof = new EOFPacket(); eof.packetId = ++packetId; eof.serverStatus = 2; conn.postMessage(eof.toByteBuffer(conn)); } if(okPaket.columns>0){ for(int i=0;i<okPaket.columns;i++){ FieldPacket field = new FieldPacket(); field.name = "test"; field.length = 8; field.type = (byte)MysqlDefs.FIELD_TYPE_VAR_STRING; field.packetId = (byte)(++packetId); conn.postMessage(field.toByteBuffer(conn)); } EOFPacket eof = new EOFPacket(); eof.packetId = ++packetId; eof.serverStatus = 2; conn.postMessage(eof.toByteBuffer(conn)); } } } }