Java sql delete row

66,663

Solution 1

I guess name is a varchar type in DB so do like this

PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = '" + name + "';");

enclose name within single quotes '

Also this is not the way you are using is not the proper way of using Preparedstatement

Us the following way:

PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = ?");
st.setString(1,name);
st.executeUpdate(); 

// your full code after Proper PreparedStatement

public static void DeleteRow(String name) {
    try {  
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(url, username, password);
        PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = ?");
        st.setString(1,name);
        st.executeUpdate(); 
    } catch(Exception e) {
        System.out.println(e);
    }
}

Solution 2

You should never create a SQL statement in Java with String concatenation, it will be vulnerable to sql injection. Please do it this way.

String selectSQL = "DELETE FROM Table WHERE name = ?";
connection.prepareStatement(selectSQL);
preparedStatement.setString(1, name);

Solution 3

          Class.forName("oracle.jdbc.driver.OracleDriver");
          Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "MANASH_APPN","MANASH");
          PreparedStatement ps = con.prepareStatement("delete from EMP21 where empid = ?");
           ps.setInt(1,90);
           ps.executeUpdate();
          con.commit();
          System.out.println("Records Delete Successfully....");
         con.close();
Share:
66,663
user3268379
Author by

user3268379

Updated on December 07, 2020

Comments

  • user3268379
    user3268379 over 3 years

    Hello I am trying to delete a row from my database. I am getting no errors but it is doing nothing, any help or advice would be great!

    public static void DeleteRow(String name) {
        try {  
            Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection(url, username, password);
    
            PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = " + name + ";");
            st.executeUpdate();
        } catch(Exception e) {
            System.out.println(e);
        }
    }
    
  • SpringLearner
    SpringLearner about 10 years
    @jeremyjjbrown no need to escape single quotes
  • user3268379
    user3268379 about 10 years
    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 'Table WHERE name = 'UserTest''
  • SpringLearner
    SpringLearner about 10 years
    @user3268379 what is your table name? Table is a reserved keyword in mysql
  • SpringLearner
    SpringLearner about 10 years
    @jeremyjjbrown yes thats why I mentioned that this is not the proper way of preparedstament and also I have suggested how to do
  • jeremyjjbrown
    jeremyjjbrown about 10 years
    Your code is vulnerable to SQl injection. owasp.org/index.php/Preventing_SQL_Injection_in_Java