11

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);
    }
}
Miss Chanandler Bong
  • 4,081
  • 10
  • 26
  • 36
user3268379
  • 151
  • 1
  • 1
  • 7

6 Answers6

23

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);
    }
}
Miss Chanandler Bong
  • 4,081
  • 10
  • 26
  • 36
SpringLearner
  • 13,738
  • 20
  • 78
  • 116
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);
jeremyjjbrown
  • 7,772
  • 5
  • 43
  • 55
1
          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();
0

Every open connection must be closed, or it won't get implemented and no errors will be displayed. First learned lesson.

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(); 
        connection.close();
    } catch(Exception e) {
        System.out.println(e);
    }
}

Hope this helps

Miss Chanandler Bong
  • 4,081
  • 10
  • 26
  • 36
Sudharsun
  • 741
  • 6
  • 23
0

try this bro. use Statement

Statement stmt = connection.createStatement();
String SQL = "DELETE FROM Table WHERE name = '"+name+"'";
stmt.executeUpdate(SQL);
wrecklez
  • 343
  • 2
  • 4
-1

this will work String del="DELETE FROM table WHERE name =('" + name + "')";

:)

Asif alam
  • 1
  • 6