inserção no banco de dados

5 respostas
L

BOm to com um erro mto chato nao consigo resolver

tentei de varios modos mas da erro

Eu leio dados a partir da interface e quero adicionar elas no banco de dados

segue o código

Main conector = new Main();
        
        

        String sql = ("insert into teste values ("+
            jTextField1.getText().toUpperCase()+",'"+
            jTextField2.getText().toUpperCase()+"','"+
            jTextField3.getText().toUpperCase()+"','"+
             jTextField4.getText().toUpperCase()+"');"));
         
        conector.conectar(sql)
Class.forName(driver); //Carrega o driver

               //Obtém a conexão com o banco
               Connection conn = DriverManager.getConnection(str_conn, usuario, senha);

               //Cria um statement para podermos mandar um SQL para o banco
               Statement stmt = conn.createStatement();

               //Mandamos o SQL para o bancao e obtemos um ResultSet
               String sql2 = "SELECT * FROM teste";

               System.out.println(sql);
               ResultSet rs = stmt.executeQuery(sql);

         }
        catch (ClassNotFoundException ex) {
             System.out.println("Não foi possível carregar o driver.");
             ex.printStackTrace();
        }
        catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
       }
    }

O problema é que ele sempre acusa qo codigo SQL esta incorreto, no entanto eu tento adicioanr direto no banco ele adiciona corretamente
ao meu visto o codigo SQL esta certo

nao acho o erro

5 Respostas

srignorado

Tente usar um StringBuffer para montar a SQL e imprima-a (dê um print) para debugar.

Leandro_M

Olá leotasso,

Veja

//Mandamos o SQL para o bancao e obtemos um ResultSet
String [color=red]sql2[/color] = “SELECT * FROM teste”;

System.out.println([color=red]sql[/color]);
ResultSet rs = stmt.executeQuery([color=red]sql[/color]);

Veja se não pode ser isso

L

Não!

problema q eu passo por paramentro e nao funciona

isso é lixo pq eu tava testando

se eu mandar o sql2

//Mandamos o SQL para o bancao e obtemos um ResultSet
String sql2 = “SELECT * FROM teste”;

System.out.println(sql2);
ResultSet rs = stmt.executeQuery(sql2);

ele funciona!

porem qdo mando sql via insert nao funciona

L
public void conectar(String query) {
           String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
           String banco = "locadora"; //Nome do Banco criado
           String host = "localhost"; //Maquina onde está o banco
           String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
           String usuario = "root"; //Usuário do banco
           String senha = "123"; //Senha de conexão

           try {
               Class.forName(driver); //Carrega o driver

               //Obtém a conexão com o banco
               Connection conn = DriverManager.getConnection(str_conn, usuario, senha);

               //Cria um statement para podermos mandar um SQL para o banco
               Statement stmt = conn.createStatement();

               //Mandamos o SQL para o bancao e obtemos um ResultSet
               //String sql3 = "SELECT * FROM teste";
               String query2 ="insert into teste2 values (20,'teste','teste','teste');";
              System.out.println(query);
              System.out.println(query2);
               
          ResultSet rs = stmt.executeQuery(query2);
          
        }
        catch (ClassNotFoundException ex) {
             System.out.println("Não foi possível carregar o driver.");
             ex.printStackTrace();
        }
        catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
       }
    }
}

MESMO PASSANDO A STRING DIRETO SEM SER POR PARAMETRO ELA ACUSA O ERRO "PROBLEMA COM O SQL"
porem com a mesma string q eu passo eu adiciono manualmente no banco de dados e ela executa sem problema

Alguem sabe o q pode ser?

Leandro_M
Tenta usar assim
public void conectar() throws Exception{
           
           String driver = "com.mysql.jdbc.Driver"; //Classe do driver JDBC
           String banco = "test"; //Nome do Banco criado
           String host = "localhost"; //Maquina onde está o banco
           String str_conn = "jdbc:mysql://" + host + ":3306/" + banco; //URL de conexão
           String usuario = "root"; //Usuário do banco
           String senha = ""; //Senha de conexão

           Connection conn = null;
           
           try {
               Class.forName(driver); //Carrega o driver

               //Obtém a conexão com o banco
                conn = (Connection) DriverManager.getConnection(str_conn, usuario, senha);
                
                conn.setAutoCommit(false);
                String sql = "insert into teste2 values (?,?,?,?)";
                PreparedStatement ps = conn.prepareStatement(sql);
            
            ps.setInt(1, 20);
            ps.setString(2, "teste");
            ps.setString(3, "teste2");
            ps.setString(4, "teste3");

            ps.executeUpdate();
            conn.commit();

           //Usado para select    
          //ResultSet rs = stmt.executeQuery(query2);
          
        }
        catch (ClassNotFoundException ex) {
             //Desfaz o insert caso haja erro
            conn.rollback();
             System.out.println("Não foi possível carregar o driver.");
             ex.printStackTrace();
        }
        catch (SQLException ex) {
            //Desfaz o insert caso haja erro
            conn.rollback();
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
       } finally {
            conn.close();
        }
    }
Criado 11 de junho de 2009
Ultima resposta 12 de jun. de 2009
Respostas 5
Participantes 3