[RESOLVIDO]String sql incorreta

5 respostas
R

NÃO É POSSÍVEL!

Eu comparei a minha String com várias outras que achei pela internet, e nada.

try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();

            Connection con;
            con = DriverManager.getConnection("jdbc:mysql://localhost/sfashion", "root", "");


            try {
                String SQL = "DELETE FROM entregas WHERE nome=? and dataent=?";
                PreparedStatement st = con.prepareStatement(SQL);
                st.setString(1, cbbcli1.getSelectedItem().toString());
                st.setString(2, cbbdata1.getSelectedItem().toString());
                st.executeUpdate(SQL);
                JOptionPane.showMessageDialog(null, "Registro removido.");
                st.close();
                con.close();



            } catch (Exception s) {
                System.out.println(s);


            }
        } catch (Exception s) {
            System.out.println(s);

Se eu organizo minha String desse jeito:

String SQL = "DELETE FROM entregas WHERE nome=? and dataent=?";
                PreparedStatement st = con.prepareStatement(SQL);
                st.setString(1, cbbcli1.getSelectedItem().toString());
                st.setString(2, cbbdata1.getSelectedItem().toString());

O mysql retorna: “com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘? and dataent=?’ at line 1”

E seu organizo minha String desse jeito:

String SQL = "DELETE FROM entregas WHERE nome="+cbbcli1.getSelectedItem().toString()+" and dataent="+cbbdata1.getSelectedItem().toString();
                PreparedStatement st = con.prepareStatement(SQL);
                st.executeUpdate(SQL);

O mysql retorna: “com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘Henrique’ in ‘where clause’”

(“Henrique” foi o valor que eu cadastrei no banco, na coluna name, para fazer testes).

Além disso, já testei usando execute() e executeUpdate() no preparedStatement, nenhum dos dois vai.

OBS: Eu passei um bom tempo estudando java, mas ainda tenho algumas dúvidas. Mas eu sempre pesquiso antes de criar um novo tópico aqui. :slight_smile:

5 Respostas

Danilo_Carvalho

dataent está definido com que tipo no seu banco de dados?

Aleksandro

Tente assim:

try {  
        Class.forName("com.mysql.jdbc.Driver").newInstance();  
      
        Connection con;  
        con = DriverManager.getConnection("jdbc:mysql://localhost/sfashion", "root", "");  
      
      
        try {  
            String SQL = "DELETE FROM entregas WHERE nome=? and dataent=?";  
            PreparedStatement st = con.prepareStatement(SQL);  
            st.setString(1, cbbcli1.getSelectedItem().toString());  
            st.setString(2, cbbdata1.getSelectedItem().toString());  
            st.execute(SQL);  
            JOptionPane.showMessageDialog(null, "Registro removido.");  
            st.close();  
            con.close();  
      
      
      
        } catch (Exception s) {  
            System.out.println(s);  
      
      
        }  
    } catch (Exception s) {  
        System.out.println(s);
ppro11

experimenta modificar a linha abaixo:

st.executeUpdate(SQL);

para:

st.execute(SQL);
sr.saude

Ou ainda, troque

st.executeUpdate(SQL);

para

st.execute();

Você já passou o SQL necessário para criar o PreparedStatement antes. Não precisa passá-lo de novo.

R
Aleksandro:
Tente assim:
try {  
        Class.forName("com.mysql.jdbc.Driver").newInstance();  
      
        Connection con;  
        con = DriverManager.getConnection("jdbc:mysql://localhost/sfashion", "root", "");  
      
      
        try {  
            String SQL = "DELETE FROM entregas WHERE nome=? and dataent=?";  
            PreparedStatement st = con.prepareStatement(SQL);  
            st.setString(1, cbbcli1.getSelectedItem().toString());  
            st.setString(2, cbbdata1.getSelectedItem().toString());  
            st.execute(SQL);  
            JOptionPane.showMessageDialog(null, "Registro removido.");  
            st.close();  
            con.close();  
      
      
      
        } catch (Exception s) {  
            System.out.println(s);  
      
      
        }  
    } catch (Exception s) {  
        System.out.println(s);

É ISSO!!!!!!!!!!!
Só que o st.execute é assim

st.execute();

Não tava conseguindo arrumar isso de jeito nenhum, obrigado a todo mundo que me respondeu aqui :)
TÓPICO FECHADO! ^^

Criado 2 de janeiro de 2013
Ultima resposta 3 de jan. de 2013
Respostas 5
Participantes 5