Java sql删除行

use*_*379 8 java sql database sql-delete

您好我试图从我的数据库中删除一行.我没有错,但它什么也没做,任何帮助或建议都会很棒!

 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);
     }
}
Run Code Online (Sandbox Code Playgroud)

Spr*_*ner 18

我猜名称是DB中的varchar类型,所以这样做

PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = '" + name + "';");
Run Code Online (Sandbox Code Playgroud)

将名称括在单引号内 '

这也不是你使用的方式不是使用Preparedstatement的正确方法

我们通过以下方式

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

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);
 }
}
Run Code Online (Sandbox Code Playgroud)