Dificuldades com inserção de registro na base

5 respostas
P

pessoal to com dificuldades no seguinte código

eis meu servlet :

package servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UploadServlet extends javax.servlet.http.HttpServlet {

    static final long serialVersionUID = 1L;
    static Connection conn;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doExecute(request, response);
    }

    public static void initConnection() throws Exception {
        String DRIVER = "oracle.jdbc.driver.OracleDriver";
        String URL = "jdbc:oracle:thin:@localhost:1521:xe";
        String USER = "puudia";
        String PASSWORD = new String("puudia");
        
        Class.forName(DRIVER);
        conn = DriverManager.getConnection(URL, USER, PASSWORD);
        
    }
    
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doExecute(request, response);
    }   
    protected void doExecute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        // isso aqui tem que pegar o usuario logado, caso contrario -1 anonymous
        int idusu = 1;
        
        try {
            
            initConnection();
            
            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            
            // Create a factory for disk-based file items
            FileItemFactory factory = new DiskFileItemFactory();

            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);

            // Parse the request
            List items = upload.parseRequest(request);
            int i = 0;
            // Process the uploaded items
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();

                // somente se o cmapo do
                if (item.isFormField() == false) {
                    int id = 0;
                    // pegar o id da foto
                    Statement stmt = conn.createStatement();
                    ResultSet rs = stmt.executeQuery("select sfot_id.nextval xxx from dual");
                    if (rs.next()) {
                        id = rs.getInt("xxx");
                    }
                    rs.close();
                    rs = null;
                    stmt.close();
                    stmt = null;
                    
                    String fileName = item.getName();
                    String ext = fileName.substring(fileName.lastIndexOf("."), fileName.length());
                    String file = "D:\\Projetos\\puudia\\web\\fotos\\f"+id+ext;
                    String url = "f"+id+ext;
                    InputStream is = item.getInputStream();
                    FileOutputStream fos = new FileOutputStream(new File(file));                    
                    
                    // gravar foto
                    byte[] b = new byte[1024];
                    while (is.read(b) != -1) {
                        fos.write(b);
                    }
                    fos.flush();
                    fos.close();
                    fos = null;
                    
                    is.close();
                    is = null;
                    
                    PreparedStatement ps = conn.prepareStatement("insert into puudia.foto(fot_id, usu_id, fot_url, fot_descricao, fot_data) values(?, ?, ?, ?, sysdate)");

                    ps.setInt(1, id);
                    ps.setInt(2, idusu);
                    ps.setString(3, url);
                    ps.setString(4, "foto sem comentário");

                    ps.executeUpdate();

                    ps.close();
                    ps = null;

                }
            }

ele faz o seguinte, envia a o endereço da foto pra uma pasta, envia o endereço da foto para o banco de dados
mais o comentário não vai!

alguém pode me ajudar?

alem do mais se alguems souber como colocar um sistema de tags pra foto ficaria grato!

5 Respostas

F

E aí…

Primeiro - O título do seu tópico deve ser descritivo ao problema que você está enfrentando.
Segundo - O GUJ não é suporte grátis que você diz "Pessoal, olha esse é meu código e eu quero fazer isso…"
Terceiro - Segundo as boas práticas de programação um Servlet não deve fazer acesso ao BD, o Servlet é apenas o Controlador. Que deve fazer acesso ao BD é uma classe Java normal.
Quarto - Qual parte especifica do código está seu problema? Você já conseguiu identificar isso?

Aguardo para poder te ajudar melhor…

skalinichenko

Em uma mesma Servlet, você faz a conexão como banco, trata o Request e etc?
Que comentário não vai? Para o banco?
Muito confuso…
Abçs!

T

Vou mover seu tópico para o fórum adequado, e dar um titulo mais decente.

P

[i]E aí…

Segundo - O GUJ não é suporte grátis que você diz “Pessoal, olha esse é meu código e eu quero fazer isso…”

Aguardo para poder te ajudar melhor…[/i]

qual parte do meu post eu disse isso ? “O GUJ não é suporte grátis que você diz “Pessoal, olha esse é meu código e eu quero fazer isso…””

e outra, não perguntei aqui as boas práticas de programação, nem como fazer um título de tópicos, e acho que nem adianta pq nele está

ajudem pliz! vc entrou mais não ajudou em nada :wink:

não quer ajudar nem entra.

F

Você é um membro novo do Guj, criou um tópico todo errado, fora dos padrões. Tem muito espertinho que vem aqui e acha que vai ganhar as coisas prontas sem precisar fazer esforço nenhum. Me desculpe se interpretei mal a sua questão, mas é que acho que esse tipo de pessoal merece levar uma “dura” para deixar de ser folgado.

Novamente, desculpe se interpretei mal sua participação.

Foi só uma dica. Se você não quiser melhorar, o problema não será meu.

Se você pensar assim, cada tópico que você criar vai vir um membro mais antigo do fórum te dizer as mesmas coisas que te disse. Eu quando iniciei no fórum há uns dois anos, ouvi muito isso.

ajudem pliz! vc entrou mais não ajudou em nada

não quer ajudar nem entra.


Se eu participo do fórum é para ajudar e ser ajudado quando precisar. Se tirei tempo para ler teu tópico, tentar entender teu código era porque estava disposto a te ajudar.

Mas como te falei, tua pergunta precisa ser melhor esclarecida. Qual comentário que você quer enviar junto?

Por favor, esclareça. Ou então, sinto muito mas não poderei ajudar.

Até +.
Desculpe pelo stress. :thumbup:

Criado 30 de março de 2009
Ultima resposta 31 de mar. de 2009
Respostas 5
Participantes 4