UPDATE NO BANCO ACCESS  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
xapulePJ
Entusiasta Java
[Avatar]

Membro desde: 20/09/2004 00:00:00
Mensagens: 20
Offline

tenho uns registros nos access e um formulário jsp para fazer alteração.
Estou conseguindo alteração dos campos no banco tipo texto numa boa, porém quando tento alterar um campo tipo numérico ou data para vazio ta dando pau.
Ex: nome="fulano", dataaniversario = nada
Como é sintaxe para fazer essa mágica.
[WWW] [ICQ]
LeandroSeverinoPJ
JavaBaby
[Avatar]

Membro desde: 14/01/2003 00:00:00
Mensagens: 78
Offline

Colega,
Tu já verificou se o campo da tabela esta aceitando valores nulos ?
Se está aceitando, tens que passar 'Null' no teu UPDATE.

Espero ter ajudado.
Atenciosamente,
Leandro.
[WWW] aim icon [ICQ]
xapulePJ
Entusiasta Java
[Avatar]

Membro desde: 20/09/2004 00:00:00
Mensagens: 20
Offline

carinha, no access a única condição para campo tipo data e se é requerido, no caso da minha tabela tá requerido = não. Se jaba a sintaxe jsp para colocar null para esse campo? Já tentei fazer isso mas só levei bordoada
[WWW] [ICQ]
LeandroSeverinoPJ
JavaBaby
[Avatar]

Membro desde: 14/01/2003 00:00:00
Mensagens: 78
Offline

Colega,
Tens razão. Tu poderias colocar aqui o teu código para fazer o UPDATE ? e a(s) mensagen(s) de erro ?

Valeu.
[WWW] aim icon [ICQ]
xapulePJ
Entusiasta Java
[Avatar]

Membro desde: 20/09/2004 00:00:00
Mensagens: 20
Offline

Aí está a criança:
<HTML>
<HEAD>
<TITLE>IMPRENSA NACIONAL</TITLE>
</HEAD>
<BODY bgcolor = "38B0DE">
<h3>Atualização de Dados do Fluxo DO</h3>
<HR size = 8>
<%@ page import="java.sql.*" errorPage="ErroBco.jsp" %>
<FORM name="Alteracao" action="Fluxo.jsp">
<BR><H3>Atualização Concluida</H3><BR>
<BR><BR>
<%! String diajornal, publicacao,
nedicaosecao1,nedicaosecao2,nedicaosecao3,inicioeditoracaodo1,fimeditoracaodo1,
iniciopaginacaodo1, fimpaginacaodo1, npagpaginacaodo1, npagdo1somapr1,
inicioeditoracaopr1,fimeditoracaopr1, iniciopaginacaopr1, fimpaginacaopr1,
npagpaginacaopr1, pagcaderno1_1, pagcaderno1_2, pagcaderno1_3,
pagcaderno1_4, totcadernos1, totpartes1, enviofoto1, contato1,
inicioeditoracaodo2,fimeditoracaodo2,
iniciopaginacaodo2, fimpaginacaodo2, npagpaginacaodo2, npagdo2somapr2,
inicioeditoracaopr2,fimeditoracaopr2, iniciopaginacaopr2, fimpaginacaopr2,
npagpaginacaopr2, pagcaderno2_1, pagcaderno2_2, pagcaderno2_3,
pagcaderno2_4, totcadernos2, totpartes2, enviofoto2, contato2,
inicioeditoracaodo3, fimeditoracaodo3, iniciopaginacaodo3, fimpaginacaodo3,
npagdo3, pagcaderno3_1, pagcaderno3_2, pagcaderno3_3,
pagcaderno3_4, totpartes3, enviofoto3, contato3,totcadernos3,
inicioeditoracaoextra1, fimeditoracaoextra1, iniciopaginacaoextra1,
fimpaginacaoextra1, npagextra1, totcadernosextra1, totpartesextra1,
enviofotoextra1, contatoextra1, inicioeditoracaoextra2,fimeditoracaoextra2,
iniciopaginacaoextra2, fimpaginacaoextra2, npagextra2, totcadernosextra2,
totpartesextra2, enviofotoextra2, contatoextra2, inicioeditoracaoextra3,
fimeditoracaoextra3, iniciopaginacaoextra3, fimpaginacaoextra3,
npagextra3, totcadernosextra3, totpartesextra3, enviofotoextra3,
contatoextra3, ocorrencias1, ocorrencias2, ocorrencias3,
sql, url = "jdbc:odbc:odbcfluxo1";
Connection MinhaConexao;
Statement MeuState;
ResultSet rs;
public String nulo1 = null;

%>
<% diajornal = (String) request.getParameter("diajornal");
diajornal = diajornal.substring(6).substring(0,4)+"-"+
diajornal.substring(3).substring(0,2)+"-"+
diajornal.substring(0).substring(0,2);
publicacao = (String) request.getParameter("publicacao");
if(publicacao != ""){
publicacao = publicacao.substring(6).substring(0,4)+"-"+
publicacao.substring(3).substring(0,2)+"-"+
publicacao.substring(0).substring(0,2);
}
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
MinhaConexao = DriverManager.getConnection(url);
MeuState = MinhaConexao.createStatement();
sql = "UPDATE TabDO SET diajornal=#"+diajornal+"#";
if(publicacao==""){
sql = sql + ", publicacao = 'null'";
}
else{
sql = sql + ",publicacao=#"+publicacao+"#";
}
sql = sql + " WHERE diajornal=#"+diajornal+"#";
MeuState.executeUpdate(sql);
}
catch(ClassNotFoundException e)
{
System.err.println("Driver JDBC nao encontrado !!!");
throw e;
}
catch (SQLException se)
{
System.err.println("Nao consegui conectar com o banco !!!");
throw se;
}

%>
Registros Atualizados
<BR><BR>
<INPUT type=submit value="Confirmar">
</FORM>
</BODY>
</HTML>
ERRO RECEBIDO QUANDO TEMTO LIMPAR O VALOR DO CAMPO DATA:
java.lang.NullPointerException
[WWW] [ICQ]
LeandroSeverinoPJ
JavaBaby
[Avatar]

Membro desde: 14/01/2003 00:00:00
Mensagens: 78
Offline

Colega,
Tô achando meio estranho essas "#", mas vou te dar umas dicas:

1. Comenta o código para executar o SQL(o executeUpdate) e dá um System.out.println() na variável que contém o SQL para verificar se estão sendo passado os parâmetros todos de forma correta.
2. Se estiver OK, tenta executar o resultado desta impressão no ACCESS e verifica se faz o UPDATE, tipo assim, copia o código que foi impresso com o System.out e executa lá dentro do ACCESS para ver se não esta sendo infrigida alguma regra de integridade do banco ou algo parecido. ( Para fazer isto crie uma nova consulta no modo estrutura e depois muda para o tipo especifica SQL ( Algo deste tipo ) ).
3. Tenta executa sem estas "#", substituiindo por "'" (Aspas simples).

Espero ter ajudado.

Atenciosamente,
Leandro.

http://www.lstecnologia.com.br/page/blog/blog.faces
[WWW] aim icon [ICQ]
xapulePJ
Entusiasta Java
[Avatar]

Membro desde: 20/09/2004 00:00:00
Mensagens: 20
Offline

8O OK! VOU TENTAR ESSAS DICAS. VALEU!!!
[WWW] [ICQ]
spierPJ
JavaTeenager
[Avatar]

Membro desde: 14/11/2003 00:00:00
Mensagens: 193
Offline

Vale para access e demais banco de dados que sigam de alguma maneira o que determina o ANSI:

Se um campo não é requerido (aceita null) basta omití-lo da sql!



outro detalhe:

datas no sql do access devem ser informado entre ## E NECESSARIAMENTE em um dos seguintes formatos:

mm/dd/yy ou
mm/dd/yyyy ou
yyyy-mm-dd


bob
[WWW] [ICQ]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team