org.mariadb.jdbc.client.util.Parameter Maven / Gradle / Ivy
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.client.util;
import java.io.IOException;
import java.sql.SQLException;
import org.mariadb.jdbc.client.Context;
import org.mariadb.jdbc.client.socket.Writer;
/** Parameter */
public interface Parameter {
/**
* Encode parameter in text format
*
* @param encoder packet writer
* @param context connection context
* @throws IOException if socket error occurs
* @throws SQLException if other kind of error occurs
*/
void encodeText(Writer encoder, Context context) throws IOException, SQLException;
/**
* Encode parameter in binary format
*
* @param encoder packet writer
* @throws IOException if socket error occurs
* @throws SQLException if other kind of error occurs
*/
void encodeBinary(Writer encoder) throws IOException, SQLException;
/**
* Encode parameter in binary long format
*
* @param encoder packet writer
* @throws IOException if socket error occurs
* @throws SQLException if other kind of error occurs
*/
void encodeLongData(Writer encoder) throws IOException, SQLException;
/**
* transform parameter in byte array
*
* @return bytes
* @throws IOException if socket error occurs
* @throws SQLException if other kind of error occurs
*/
byte[] encodeData() throws IOException, SQLException;
/**
* Can parameter be encoded in binary long format
*
* @return can parameter be encoded in binary long format
*/
boolean canEncodeLongData();
/**
* return binary encoding type
*
* @return binary encoding type
*/
int getBinaryEncodeType();
/**
* is parameter null
*
* @return is null
*/
boolean isNull();
/**
* Methods to return parameter as string if possible (Streaming parameter will return null)
*
* @param context current connection context
* @return null if not available.
*/
String bestEffortStringValue(Context context);
}