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 bancoConnectionconn=DriverManager.getConnection(str_conn,usuario,senha);//Cria um statement para podermos mandar um SQL para o bancoStatementstmt=conn.createStatement();//Mandamos o SQL para o bancao e obtemos um ResultSetStringsql2="SELECT * FROM teste";System.out.println(sql);ResultSetrs=stmt.executeQuery(sql);}catch(ClassNotFoundExceptionex){System.out.println("Não foi possível carregar o driver.");ex.printStackTrace();}catch(SQLExceptionex){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
publicvoidconectar(Stringquery){Stringdriver="com.mysql.jdbc.Driver";//Classe do driver JDBCStringbanco="locadora";//Nome do Banco criadoStringhost="localhost";//Maquina onde está o bancoStringstr_conn="jdbc:mysql://"+host+":3306/"+banco;//URL de conexãoStringusuario="root";//Usuário do bancoStringsenha="123";//Senha de conexãotry{Class.forName(driver);//Carrega o driver//Obtém a conexão com o bancoConnectionconn=DriverManager.getConnection(str_conn,usuario,senha);//Cria um statement para podermos mandar um SQL para o bancoStatementstmt=conn.createStatement();//Mandamos o SQL para o bancao e obtemos um ResultSet//String sql3 = "SELECT * FROM teste";Stringquery2="insert into teste2 values (20,'teste','teste','teste');";System.out.println(query);System.out.println(query2);ResultSetrs=stmt.executeQuery(query2);}catch(ClassNotFoundExceptionex){System.out.println("Não foi possível carregar o driver.");ex.printStackTrace();}catch(SQLExceptionex){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
publicvoidconectar()throwsException{Stringdriver="com.mysql.jdbc.Driver";//Classe do driver JDBCStringbanco="test";//Nome do Banco criadoStringhost="localhost";//Maquina onde está o bancoStringstr_conn="jdbc:mysql://"+host+":3306/"+banco;//URL de conexãoStringusuario="root";//Usuário do bancoStringsenha="";//Senha de conexãoConnectionconn=null;try{Class.forName(driver);//Carrega o driver//Obtém a conexão com o bancoconn=(Connection)DriverManager.getConnection(str_conn,usuario,senha);conn.setAutoCommit(false);Stringsql="insert into teste2 values (?,?,?,?)";PreparedStatementps=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(ClassNotFoundExceptionex){//Desfaz o insert caso haja erroconn.rollback();System.out.println("Não foi possível carregar o driver.");ex.printStackTrace();}catch(SQLExceptionex){//Desfaz o insert caso haja erroconn.rollback();System.out.println("Problema com o SQL");ex.printStackTrace();}finally{conn.close();}}