preparedresultpacket.java

来自「mysql集群」· Java 代码 · 共 69 行

JAVA
69
字号
package com.meidusa.amoeba.aladdin.io;

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.statementHandlerId = 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));
			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?