Bom dia a todos.
Preciso atribuir NULO para o objeto.
Como faço isso?
pstmt2.setObject(i, Null);
Obrigado.
Bom dia a todos.
Preciso atribuir NULO para o objeto.
Como faço isso?
pstmt2.setObject(i, Null);
Obrigado.
É isso.
Apresenta erro de Syntax.
Posta o trecho do código aí…
Ao meu entender, você poderia criar um objeto nulo (Object obj = null);
Primeiro Bloco
protected void ExecutaTransacao(final String strSQL) {
this.lhmAtributosClasse = getAtributosClasse();
try {
//Prepara transação
PreparedStatement pstmt = conexao.prepareStatement(strSQL);
//Atribui valores aos parâmetros
int i = 0;
//Inclusão
if (strSQL.indexOf("INSERT INTO") > -1) {
//Parâmetros de contexto da QUERY
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
}
}
//Mostra String SQL
System.out.println(pstmt);
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("UPDATE") > -1) {
//Parâmetros de contexto da QUERY
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsColunasTabela.getString("COLUMN_NAME")));
}
}
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt);
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("DELETE FROM") > -1) {
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt);
//Executa procedimento
pstmt.executeUpdate();
} else if (strSQL.indexOf("SELECT FROM") > -1) {
//Parâmetros da cláusula WHERE
rsChavesTabela.beforeFirst();
while (rsChavesTabela.next()) {
pstmt = TrataParametro(pstmt, ++i, this.lhmAtributosClasse.get(rsChavesTabela.getString("COLUMN_NAME")));
}
//Mostra String SQL
System.out.println(pstmt);
//Executa procedimento
pstmt.executeQuery();
}
////Mostra parâmetros e seus respectivos valores - (Esta PORRA!, não Funciona com alguns Drivers. Inclusive este!)
//System.out.println("Parâmetros ...");
//
//ParameterMetaData pmd = pstmt.getParameterMetaData();
//
//for (int i2 = 1; i2 < pmd.getParameterCount(); i2++) {
// System.out.println("Parameter number " + i2);
// System.out.println(" Class name is " + pmd.getParameterClassName(i2));
// // Note: Mode relates to input, output or inout
// System.out.println(" Mode is " + pmd.getParameterClassName(i2));
// System.out.println(" Type is " + pmd.getParameterType(i2));
// System.out.println(" Type name is " + pmd.getParameterTypeName(i2));
// System.out.println(" Precision is " + pmd.getPrecision(i2));
// System.out.println(" Scale is " + pmd.getScale(i2));
// System.out.println(" Nullable? is " + pmd.isNullable(i2));
// System.out.println(" Signed? is " + pmd.isSigned(i2));
//}
//Fecha procedimento
pstmt.close();
} catch (SQLException errorSQL) {
JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
errorSQL.printStackTrace();
}
}
Segundo Bloco
protected String PreparaInclusaoRegistro() throws SQLException {
StringBuffer sbSQL;
//Inclui Registro
sbSQL = new StringBuffer();
sbSQL.append("INSERT INTO ").append("tb_").append(this.nomeTabela).append(" ");
sbSQL.append("(");
//Lista as entradas (Campos da Tabela)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
sbSQL.append(rsColunasTabela.getString("COLUMN_NAME")).append((", "));
}
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
sbSQL.append(") VALUES (");
//Lista as entradas (Parâmetros)
rsColunasTabela.beforeFirst();
while (rsColunasTabela.next()) {
if (rsColunasTabela.getString("IS_AUTOINCREMENT").equals("NO")) {
sbSQL.append("?, ");
}
}
//Retira o excesso
sbSQL.delete(sbSQL.length() - 2, sbSQL.length());
sbSQL.append(")");
return sbSQL.toString();
}
Terceiro Bloco (BLOCO DO ERRO
protected static PreparedStatement TrataParametro(final PreparedStatement pstmt, final int i, final Object Objeto) throws SQLException {
PreparedStatement pstmt2 = pstmt;
//Trata o parâmetro
if(Objeto instanceof GregorianCalendar) {
pstmt2.setDate(i, new java.sql.Date(((GregorianCalendar) Objeto).getTime().getTime()));
} else if (Objeto instanceof String) {
pstmt2.setString(i, (String) Objeto);
} else if (Objeto instanceof Integer) {
pstmt2.setInt(i, ((Integer) Objeto).intValue());
} else if (Objeto instanceof Float) {
pstmt2.setDouble(i, (Float) Objeto);
} else if (Objeto instanceof Short) {
pstmt2.setDouble(i, (Short) Objeto);
} else if (Objeto instanceof Double) {
pstmt2.setDouble(i, (Double) Objeto);
} else {
System.out.println("Tipo inexistente -> " + "");
pstmt2.setObject(i, Null);
}
return pstmt2;
}
O Resultado apresenta é esse:
INSERT INTO tb_ParceirosComerciais2 (NomeRazaoSocial, CodigoTipoParceiro, NomeFantasia, DataCadastramento, DataNascimento, CPF_CNPJ, NumeroIdentidade, CodigoOrgaoExpedidor, DataEmissaoIdentidade, EstadoEmissorIdentidade, CodigoTipoPessoa) VALUES (‘Fulano de Tal’, 1.0, ‘Fulano’, ‘2011-05-10’, ‘1967-04-14’, ‘Null’, ‘Null’, ‘Null’, ‘Null’, ‘Null’, ‘Null’);
Quando deveria ser (Null sem ASPAS Simples):
Obrigado!
tenta
xxxx.setNull(1, null)
PS: não sei se são 2 parametros ou apenas 1 que são enviados
Exatamente, setNull(int pos, null);
Um dos métodos do PreparedStatement
drsmachado
valeu por confirmar…
como não uso PS não me lembrava se era isso mesmo
pstmt2.setObject(i, null);
conseguiu resolver seu problema prsantos
caso sim altere seu topico para RESOLVIDO
Perdão!
Tive a intenção. Como faço isso?
vai no primeiro post deste topico e clique em editar, ai coloque [Resolvido]
o que eu passei solucionou seu problema?
RESOLVIDO
protected static PreparedStatement TrataParametro(final PreparedStatement pstmt, final int i, final Object Objeto) throws SQLException {
PreparedStatement pstmt2 = pstmt;
//Trata o parâmetro
if(Objeto instanceof GregorianCalendar) {
pstmt2.setDate(i, new java.sql.Date(((GregorianCalendar) Objeto).getTime().getTime()));
} else if (Objeto instanceof String) {
pstmt2.setString(i, (String) Objeto);
} else if (Objeto instanceof Integer) {
pstmt2.setInt(i, ((Integer) Objeto).intValue());
} else if (Objeto instanceof Float) {
pstmt2.setDouble(i, (Float) Objeto);
} else if (Objeto instanceof Short) {
pstmt2.setDouble(i, (Short) Objeto);
} else if (Objeto instanceof Double) {
pstmt2.setDouble(i, (Double) Objeto);
} else {
System.out.println("Tipo inexistente -> " + "");
pstmt2.setObject(i, null);
}
return pstmt2;
}