Olá,
Pessoal, eu queria colocar o seguinte código abaixo como uma extensão das implementacões da interface CallableStatement. Não acho que dê para fazer isso em Java, mas sei que é algo simples de se fazer em Ruby.
[code]
private void setParameter(String parameterName, Object value) {
if ((parameterName == null) || (parameterName.length() < 1))
return;
if (value instanceof Integer) {
if (value == null) {
statement.setNull(parameterName, java.sql.Types.INTEGER);
} else {
statement.setInt(parameterName, (Integer)value);
}
} else if (value instanceof String) {
if (value == null) {
statement.setNull(parameterName, java.sql.Types.VARCHAR);
} else {
statement.setString(parameterName, value);
}
} else if (value instanceof Double) {
if (value == null) {
statement.setNull(parameterName, java.sql.Types.DECIMAL);
} else {
statement.setDouble(parameterName, value);
}
}...
}[/code]
A idéia inicial era estender CallableStatement da seguinte maneira:
package reportgen;
import java.sql.CallableStatement;
/**
*
* @author jfbaro
*/
public interface NullAwareCallableStatement extends CallableStatement {
public void setParameter(String parameterName, Object value);
}
Isso permitiria que eu tivesse um código mais limpo, algo como:
statement.setParameter("name", strName);
statement.setParameter("age", iAgeInYears);
statement.setParameter("salary", dSalaryInDollars);
O problema é descobrir onde eu colocaria a implementação de setParameter, já que não consigo estender as classes que são retornadas quando eu uso:
NullAwareCallableStatement statement = null;
ResultSet rs = null;
statement = (NullAwareCallableStatement)conn.prepareCall("{ call spb_RelVsfDLog(?, ?, ?, ?, ?, ?, ?, ?) }");
Alguma dica?
Obrigado