Problemas do enviar as informaçoes

1 resposta
jsnpereira

Olá, pessoal!

Já tentei as vezes… não encontramos para resolver a problemas… veja texto de erro…
Mensagem de erro…

Tam: 3
Erro de acesso da Tabela
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Column 'comentario' cannot be null
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1541)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1455)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1440)
	at DAO.ArquivoDAO.incluirFotos(ArquivoDAO.java:25)
	at IncluirArquivoServlet.doPost(IncluirArquivoServlet.java:60)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
[email removido]

Servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		boolean isMultiplad = ServletFileUpload.isMultipartContent(request);

		Arquivos a = new Arquivos();

		if(isMultiplad){
			FileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			List<FileItem> itens = null;

			try {
				itens = (List<FileItem>) upload.parseRequest(request);
				System.out.println("Tam: "+itens.size());

			} catch (FileUploadException e) {
				System.err.println("Erro!!"+e.getMessage());
				e.printStackTrace();
			}

			for(FileItem item : itens){
				if(!item.isFormField()){
					a.setFotos(item.get());
				} else if(item.getString().equals("nome")){
						a.setComentario(item.getString());
				} else if(item.getString().equals("idprod")){
					a.setIdprodutos(Integer.parseInt(item.getString()));
				}
			}

				ArquivoDAO dao = new ArquivoDAO();

				dao.incluirFotos(a);

			}
		
			response.sendRedirect("CadastroArquivo.jsp");
		}

	}

Cadastro de arquivo

<form action="/LojaVirtualAula/IncluirArquivoServlet" method="post" enctype="multipart/form-data">
<table>
<tr><td>Produtos:</td><td align="left">
<select name="idprod" size="1">
	<option value=" "><center>----Produtos----</center></option>
	
	<% for(int i=0; i<todos.size(); i++) {%>
	
	<option value="<%=todos.get(i).getId() %>">Cód: <%=todos.get(i).getId() %> - <%=todos.get(i).getDescricao() %></option>
	
	<%} %>
</select>

<tr><td align="left">Nome:</td><td align="left"><input type="text" name="nome"></td></tr>
<tr><td align="left">Arquivo:</td><td><input type="file" name="arquivo"></td></tr>
<tr><td colspan="2"><input type="submit" value="Enviar"></td></tr>
</table>
</form>

Classe ArquivoDAO (armazena os bancos de dados)

public class ArquivoDAO {
	
	public void incluirFotos(Arquivos arq){
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/lojavirtualaula","root","");
			
			PreparedStatement st = conn.prepareStatement("INSERT INTO fotosprodutos VALUES(null,?,?,?)");
			
			st.setString(1,arq.getComentario());
			st.setBytes(2,arq.getFotos());
			st.setInt(3,arq.getIdprodutos());
			
			st.executeUpdate();
			
		} catch (ClassNotFoundException e) {
			System.err.println("Erro de acesso Bando de Dados");
			e.printStackTrace();
		} catch (SQLException e) {
			System.err.println("Erro de acesso da Tabela");
			e.printStackTrace();
		}
		 
	}
}

Espero que vcs me ajudem :wink:

1 Resposta

wbdsjunior

você tem uma coluna na tabela fotosproduto com nome comentario que não pode ser nula (not null).

você sempre deve informar o nome do produto. faça uma validação no jsp e/ou no servlet, para garantir que o nome foi informado.

Criado 18 de janeiro de 2011
Ultima resposta 18 de jan. de 2011
Respostas 1
Participantes 2